Spark feed generator template
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

cleanup and lex update

+11508 -813
+21 -18
README.md
··· 1 1 # Spark Feed Generator 2 2 3 - This repository is a feed generator for the Spark atproto app. It is a simple feed generator that fetches posts from a database and returns them in a format that can be used by the Spark client. 3 + This repository is a feed generator for the Spark atproto app. It is a simple 4 + feed generator that fetches posts from a database and returns them in a format 5 + that can be used by the Spark client. 4 6 5 - The whole structure is heavily based on the Bluesky [feed-generator](https://github.com/bluesky-social/feed-generator) repository, most of the things said there apply here as well. 7 + The whole structure is heavily based on the Bluesky 8 + [feed-generator](https://github.com/bluesky-social/feed-generator) repository, 9 + most of the things said there apply here as well. 6 10 7 11 ## Setup 8 12 9 13 ### Option 1: Docker Compose (Recommended) 10 14 11 - The easiest way to get started is using Docker Compose, which will automatically build the application and set up the MongoDB database. 15 + The easiest way to get started is using Docker Compose, which will automatically 16 + build the application and set up the MongoDB database. 12 17 13 18 1. Start the services (this will automatically build the image): 14 19 ··· 26 31 27 32 ### Option 2: Manual Setup 28 33 29 - If you prefer to run the application manually or use an existing MongoDB instance: 34 + If you prefer to run the application manually or use an existing MongoDB 35 + instance: 30 36 31 37 #### Prerequisites 32 38 ··· 35 41 36 42 #### Steps 37 43 38 - 1. Create a `.env` file in the root of the repository and add the following variables: 44 + 1. Create a `.env` file in the root of the repository and add the following 45 + variables: 39 46 40 47 ``` 41 - DB_NAME=feed-gen 42 - DB_HOST=localhost 43 - DB_PORT=27017 44 - DB_USER=mongo 45 - DB_PASSWORD=mongo 46 - FEEDGEN_DOMAIN=localhost:3000 47 - NODE_ENV=development 48 + SPRK_DB_NAME=feed-gen 49 + SPRK_DB_HOST=localhost 50 + SPRK_DB_PORT=27017 51 + SPRK_DB_USER=username 52 + SPRK_DB_PASSWORD=password 53 + SPRK_FEEDGEN_DOMAIN=feeds.example.com 54 + NODE_ENV=production 48 55 ``` 49 56 50 57 2. Install dependencies: ··· 53 60 deno install 54 61 ``` 55 62 56 - 3. Make sure MongoDB is running. If you don't have MongoDB installed locally, you can run it with Docker: 57 - 58 - ```sh 59 - docker run -d --name mongodb -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=mongo -e MONGO_INITDB_ROOT_PASSWORD=mongo mongo:8 60 - ``` 63 + 3. Make sure MongoDB is running. 61 64 62 65 4. Start the development server: 63 66 64 67 ```sh 65 - deno task dev 68 + deno task start 66 69 ``` 67 70 68 71 5. The application will be available at http://localhost:3000
+22
api/health.ts
··· 1 + import { Hono } from "hono"; 2 + 3 + const app = new Hono(); 4 + 5 + app.get("/", (c) => { 6 + return c.text( 7 + ` 8 + This is a feed generator for the "sprk.so" application. 9 + Learn more at https://github.com/sprksocial/feed-gen 10 + 11 + Most API routes are under /xrpc/ 12 + 13 + `, 14 + ); 15 + }); 16 + 17 + app.get("/xrpc/_health", (c) => { 18 + const version = Deno.env.get("COMMIT_SHA") ?? "unknown"; 19 + return c.json({ version }); 20 + }); 21 + 22 + export default app;
+20
api/well-known.ts
··· 1 + import { Hono } from "hono"; 2 + import { env } from "../utils/env.ts"; 3 + 4 + const app = new Hono(); 5 + 6 + app.get("/.well-known/did.json", (c) => { 7 + return c.json({ 8 + "@context": ["https://www.w3.org/ns/did/v1"], 9 + id: `did:web:${env.SPRK_FEEDGEN_DOMAIN}`, 10 + service: [ 11 + { 12 + id: "#sprk_fg", 13 + type: "SprkFeedGenerator", 14 + serviceEndpoint: `https://${env.SPRK_FEEDGEN_DOMAIN}`, 15 + }, 16 + ], 17 + }); 18 + }); 19 + 20 + export default app;
+12 -19
compose.yml
··· 1 1 services: 2 - # feed-gen: 3 - # build: . 4 - # ports: 5 - # - 3000:3000 6 - # environment: 7 - # - NODE_ENV=production 8 - # - FEEDGEN_DOMAIN=feed-gen.example.com 9 - # - DB_NAME=feed-gen 10 - # - DB_HOST=db 11 - # - DB_PORT=27017 12 - # - DB_USER=mongo 13 - # - DB_PASSWORD=mongo 14 - # depends_on: 15 - # - db 16 - 2 + feed-gen: 3 + build: . 4 + ports: 5 + - 3000:3000 6 + env_file: .env 7 + depends_on: 8 + - db 17 9 db: 18 10 image: mongo:8 11 + env_file: .env 19 12 environment: 20 - MONGO_INITDB_ROOT_USERNAME: mongo 21 - MONGO_INITDB_ROOT_PASSWORD: mongo 13 + MONGO_INITDB_ROOT_USERNAME: ${SPRK_DB_USER} 14 + MONGO_INITDB_ROOT_PASSWORD: ${SPRK_DB_PASSWORD} 22 15 ports: 23 - - '27017:27017' 16 + - "27017:27017" 24 17 volumes: 25 18 - ./devdb:/data/db 26 19 healthcheck: 27 - test: ['CMD', 'mongosh', '--eval', '''db.adminCommand("ping")'''] 20 + test: ["CMD", "mongosh", "--eval", '''db.adminCommand("ping")'''] 28 21 interval: 10s 29 22 timeout: 5s 30 23 retries: 3
+6 -6
db/connection.ts
··· 27 27 } 28 28 29 29 async connect(): Promise<void> { 30 - const { DB_USER, DB_PASSWORD, DB_HOST, DB_PORT, DB_NAME } = env; 31 - const uri = 32 - `mongodb://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/?appName=feed-gen`; 30 + const { SPRK_DB_USER, SPRK_DB_PASS, SPRK_DB_URI, SPRK_DB_NAME } = env; 33 31 34 32 this.logger.info( 35 - `Connecting to MongoDB at ${DB_HOST}:${DB_PORT}/?appName=feed-gen`, 33 + `Connecting to MongoDB at ${SPRK_DB_URI}/?appName=feed-gen`, 36 34 ); 37 35 38 36 try { 39 - await this.connection.openUri(uri, { 37 + await this.connection.openUri(SPRK_DB_URI, { 40 38 autoIndex: true, 41 39 autoCreate: true, 42 - dbName: DB_NAME, 40 + dbName: SPRK_DB_NAME, 41 + user: SPRK_DB_USER, 42 + pass: SPRK_DB_PASS, 43 43 }); 44 44 this.logger.info("Connected to MongoDB"); 45 45 } catch (error) {
+9 -10
deno.json
··· 8 8 "@atp/identity": "jsr:@atp/identity@^0.1.0-alpha.1", 9 9 "@atp/lexicon": "jsr:@atp/lexicon@^0.1.0-alpha.2", 10 10 "@atp/syntax": "jsr:@atp/syntax@^0.1.0-alpha.2", 11 - "@atp/xrpc-server": "jsr:@atp/xrpc-server@^0.1.0-alpha.2", 12 - "@atproto/lexicon": "npm:@atproto/lexicon@^0.4.12", 13 - "@logtape/logtape": "jsr:@logtape/logtape@^1.0.4", 14 - "@logtape/pretty": "jsr:@logtape/pretty@^1.1.0-dev.333+b25e634b", 15 - "hono": "jsr:@hono/hono@^4.8.4", 16 - "dotenv": "npm:dotenv@^16.4.7", 17 - "envalid": "npm:envalid@^8.0.0", 18 - "jose": "npm:jose@^6.0.12", 19 - "mongoose": "npm:mongoose@^8.12.1", 20 - "multiformats": "npm:multiformats@^13.3.7" 11 + "@atp/xrpc-server": "jsr:@atp/xrpc-server@^0.1.0-alpha.3", 12 + "@logtape/logtape": "jsr:@logtape/logtape@^1.2.2", 13 + "@logtape/pretty": "jsr:@logtape/pretty@^1.2.2", 14 + "hono": "jsr:@hono/hono@^4.10.7", 15 + "dotenv": "npm:dotenv@^16.6.1", 16 + "envalid": "npm:envalid@^8.1.1", 17 + "jose": "npm:jose@^6.1.3", 18 + "mongoose": "npm:mongoose@^8.20.1", 19 + "multiformats": "npm:multiformats@^13.4.1" 21 20 } 22 21 }
+70 -80
deno.lock
··· 11 11 "jsr:@atp/lexicon@~0.1.0-alpha.2": "0.1.0-alpha.2", 12 12 "jsr:@atp/syntax@~0.1.0-alpha.1": "0.1.0-alpha.2", 13 13 "jsr:@atp/syntax@~0.1.0-alpha.2": "0.1.0-alpha.2", 14 - "jsr:@atp/xrpc-server@~0.1.0-alpha.2": "0.1.0-alpha.2", 14 + "jsr:@atp/xrpc-server@~0.1.0-alpha.3": "0.1.0-alpha.3", 15 15 "jsr:@atp/xrpc@~0.1.0-alpha.2": "0.1.0-alpha.2", 16 - "jsr:@hono/hono@^4.8.4": "4.9.10", 17 - "jsr:@hono/hono@^4.9.8": "4.9.10", 18 - "jsr:@logtape/file@^1.2.0-dev.344+834f24a9": "1.2.0-dev.344+834f24a9", 19 - "jsr:@logtape/logtape@^1.0.4": "1.0.4", 20 - "jsr:@logtape/logtape@^1.1.0-dev.333+b25e634b": "1.1.0-dev.333+b25e634b", 21 - "jsr:@logtape/logtape@^1.2.0-dev.344+834f24a9": "1.2.0-dev.344+834f24a9", 22 - "jsr:@logtape/pretty@^1.1.0-dev.333+b25e634b": "1.1.0-dev.333+b25e634b", 16 + "jsr:@hono/hono@^4.10.7": "4.10.7", 17 + "jsr:@hono/hono@^4.9.8": "4.10.7", 18 + "jsr:@logtape/file@^1.2.0-dev.344+834f24a9": "1.2.0", 19 + "jsr:@logtape/logtape@^1.2.0": "1.2.2", 20 + "jsr:@logtape/logtape@^1.2.0-dev.344+834f24a9": "1.2.2", 21 + "jsr:@logtape/logtape@^1.2.2": "1.2.2", 22 + "jsr:@logtape/pretty@^1.2.2": "1.2.2", 23 23 "jsr:@noble/curves@^2.0.1": "2.0.1", 24 24 "jsr:@noble/hashes@2": "2.0.1", 25 25 "jsr:@noble/hashes@^2.0.1": "2.0.1", 26 - "jsr:@std/assert@^1.0.14": "1.0.15", 27 - "jsr:@std/bytes@^1.0.5": "1.0.6", 28 - "jsr:@std/cbor@~0.1.8": "0.1.8", 26 + "jsr:@std/assert@^1.0.14": "1.0.16", 27 + "jsr:@std/bytes@^1.0.6": "1.0.6", 28 + "jsr:@std/cbor@~0.1.8": "0.1.9", 29 29 "jsr:@std/crypto@^1.0.5": "1.0.5", 30 30 "jsr:@std/encoding@^1.0.10": "1.0.10", 31 - "jsr:@std/fs@^1.0.19": "1.0.19", 31 + "jsr:@std/fs@^1.0.19": "1.0.20", 32 32 "jsr:@std/internal@^1.0.12": "1.0.12", 33 - "jsr:@std/streams@^1.0.9": "1.0.13", 34 - "jsr:@zod/zod@^4.1.11": "4.1.12", 33 + "jsr:@std/streams@^1.0.14": "1.0.14", 34 + "jsr:@zod/zod@^4.1.11": "4.1.13", 35 35 "npm:@ipld/dag-cbor@^9.2.5": "9.2.5", 36 - "npm:@types/node@*": "24.0.7", 37 36 "npm:@types/node@24.0.7": "24.0.7", 38 - "npm:dotenv@^16.4.7": "16.6.1", 39 - "npm:envalid@8": "8.1.0", 40 - "npm:jose@^6.0.12": "6.0.12", 41 - "npm:mongoose@^8.12.1": "8.16.3", 42 - "npm:multiformats@^13.3.7": "13.4.1", 37 + "npm:dotenv@^16.6.1": "16.6.1", 38 + "npm:envalid@^8.1.1": "8.1.1", 39 + "npm:jose@^6.1.3": "6.1.3", 40 + "npm:mongoose@^8.20.1": "8.20.1", 43 41 "npm:multiformats@^13.4.1": "13.4.1", 44 42 "npm:rate-limiter-flexible@^2.4.2": "2.4.2", 45 - "npm:zod@^4.1.11": "4.1.12" 43 + "npm:zod@^4.1.11": "4.1.13" 46 44 }, 47 45 "jsr": { 48 46 "@atp/bytes@0.1.0-alpha.1": { 49 47 "integrity": "51ab3c11252f29265b9ac382b6b2f7023643fe74682114300f4efceee87cfd5c", 50 48 "dependencies": [ 51 - "npm:multiformats@^13.4.1" 49 + "npm:multiformats" 52 50 ] 53 51 }, 54 52 "@atp/common@0.1.0-alpha.4": { ··· 63 61 "jsr:@std/fs", 64 62 "jsr:@zod/zod", 65 63 "npm:@ipld/dag-cbor", 66 - "npm:multiformats@^13.4.1" 64 + "npm:multiformats" 67 65 ] 68 66 }, 69 67 "@atp/crypto@0.1.0-alpha.2": { ··· 86 84 "dependencies": [ 87 85 "jsr:@atp/common@~0.1.0-alpha.3", 88 86 "jsr:@atp/syntax@~0.1.0-alpha.1", 89 - "npm:multiformats@^13.4.1", 87 + "npm:multiformats", 90 88 "npm:zod" 91 89 ] 92 90 }, ··· 103 101 "jsr:@zod/zod" 104 102 ] 105 103 }, 106 - "@atp/xrpc-server@0.1.0-alpha.2": { 107 - "integrity": "fbf472cb725459ab844529c989ab61967a088956ceba03aba89f3784ee20e1e9", 104 + "@atp/xrpc-server@0.1.0-alpha.3": { 105 + "integrity": "179e8ddc0c6c9f677b57df5577da62990c543ff9b53e6c6a98380d4e512becc5", 108 106 "dependencies": [ 109 107 "jsr:@atp/bytes", 110 108 "jsr:@atp/common@~0.1.0-alpha.4", ··· 120 118 "@hono/hono@4.9.2": { 121 119 "integrity": "1a8ae7b0d9e4fecef440f991c604e032d5548dc313d1961073ac5d94809be52b" 122 120 }, 123 - "@hono/hono@4.9.10": { 124 - "integrity": "b416cf3bf42e33353e37ea13df409b08bd9a67fabc5fca630f76924fbadb01e5" 121 + "@hono/hono@4.10.7": { 122 + "integrity": "b60512559d554f20a945e07a6c5f115e57cbd4c024da9217833c8e7b2c90355d" 125 123 }, 126 - "@logtape/file@1.2.0-dev.344+834f24a9": { 127 - "integrity": "4d674c368f8130dc1403c5c93a316726a65d6b17e36b094780f1b2ed301f5e1b", 124 + "@logtape/file@1.2.0": { 125 + "integrity": "74d2fdfee845bf94cb78a95dec1fea40474b13ac3dccccd8995d23fa4dc4ba48", 128 126 "dependencies": [ 129 - "jsr:@logtape/logtape@^1.2.0-dev.344+834f24a9" 127 + "jsr:@logtape/logtape@^1.2.0" 130 128 ] 131 129 }, 132 - "@logtape/logtape@1.0.4": { 133 - "integrity": "6ada87764d995b1033c352a17fd9e20b217f3672083bc2d8debe356eac03fe10" 134 - }, 135 - "@logtape/logtape@1.1.0-dev.333+b25e634b": { 136 - "integrity": "482814e7de5a3470cd614182681bc3e64435b56f424de34badee259503a40273" 137 - }, 138 - "@logtape/logtape@1.2.0-dev.344+834f24a9": { 139 - "integrity": "204222be0f94cd1b64a500e2dcdea22a1618a086fc531b054351e3cfa079c435" 130 + "@logtape/logtape@1.2.2": { 131 + "integrity": "628fa8d52245aa1c81fd3af91622b621c1974fc8be71afb7574cd256b6aff953" 140 132 }, 141 - "@logtape/pretty@1.1.0-dev.333+b25e634b": { 142 - "integrity": "f9579c0ca9658c6424758024c26a6bd841b60c57ca0fe69dd6fda0289b6f3afe", 133 + "@logtape/pretty@1.2.2": { 134 + "integrity": "c65d2511ce261cf002d020ea76b1098c013eb199479388a1e8c06cdef0f33652", 143 135 "dependencies": [ 144 - "jsr:@logtape/logtape@^1.1.0-dev.333+b25e634b", 145 - "npm:@types/node@24.0.7" 136 + "jsr:@logtape/logtape@^1.2.2", 137 + "npm:@types/node" 146 138 ] 147 139 }, 148 140 "@noble/curves@2.0.1": { ··· 154 146 "@noble/hashes@2.0.1": { 155 147 "integrity": "e0e908292a0bf91099cf8ba0720a1647cef82ab38b588815b5e9535b4ff4d7bb" 156 148 }, 157 - "@std/assert@1.0.15": { 158 - "integrity": "d64018e951dbdfab9777335ecdb000c0b4e3df036984083be219ce5941e4703b", 149 + "@std/assert@1.0.16": { 150 + "integrity": "6a7272ed1eaa77defe76e5ff63ca705d9c495077e2d5fd0126d2b53fc5bd6532", 159 151 "dependencies": [ 160 152 "jsr:@std/internal" 161 153 ] ··· 163 155 "@std/bytes@1.0.6": { 164 156 "integrity": "f6ac6adbd8ccd99314045f5703e23af0a68d7f7e58364b47d2c7f408aeb5820a" 165 157 }, 166 - "@std/cbor@0.1.8": { 167 - "integrity": "a0d1c520f8963358cc96defd8cbd1f9e81e40adc2bbfb301f122150f2024d93e", 158 + "@std/cbor@0.1.9": { 159 + "integrity": "fe1f61f445a34c8f97973b58fecbfb24e48fcc88df7b1253d9b6fe5d2ea16936", 168 160 "dependencies": [ 169 161 "jsr:@std/bytes", 170 162 "jsr:@std/streams" ··· 176 168 "@std/encoding@1.0.10": { 177 169 "integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1" 178 170 }, 179 - "@std/fs@1.0.19": { 180 - "integrity": "051968c2b1eae4d2ea9f79a08a3845740ef6af10356aff43d3e2ef11ed09fb06" 171 + "@std/fs@1.0.20": { 172 + "integrity": "e953206aae48d46ee65e8783ded459f23bec7dd1f3879512911c35e5484ea187" 181 173 }, 182 174 "@std/internal@1.0.12": { 183 175 "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" 184 176 }, 185 - "@std/streams@1.0.13": { 186 - "integrity": "772d208cd0d3e5dac7c1d9e6cdb25842846d136eea4a41a62e44ed4ab0c8dd9e" 177 + "@std/streams@1.0.14": { 178 + "integrity": "c0df6cdd73bd4bbcbe4baa89e323b88418c90ceb2d926f95aa99bdcdbfca2411" 187 179 }, 188 - "@zod/zod@4.1.12": { 189 - "integrity": "5876ed4c6d44673faf5120f0a461a2ada2eb6c735329d3ebaf5ba1fc08387695" 180 + "@zod/zod@4.1.13": { 181 + "integrity": "fef799152d630583b248645fcac03abedd13e39fd2b752d9466b905d73619bfd" 190 182 } 191 183 }, 192 184 "npm": { ··· 197 189 "multiformats" 198 190 ] 199 191 }, 200 - "@mongodb-js/saslprep@1.3.0": { 201 - "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==", 192 + "@mongodb-js/saslprep@1.3.2": { 193 + "integrity": "sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==", 202 194 "dependencies": [ 203 195 "sparse-bitfield" 204 196 ] ··· 221 213 "bson@6.10.4": { 222 214 "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==" 223 215 }, 224 - "cborg@4.2.15": { 225 - "integrity": "sha512-T+YVPemWyXcBVQdp0k61lQp2hJniRNmul0lAwTj2DTS/6dI4eCq/MRMucGqqvFqMBfmnD8tJ9aFtPu5dEGAbgw==", 216 + "cborg@4.3.1": { 217 + "integrity": "sha512-zLyEPKHqdX08yiyMzm3A/QdurLDB1XVGB3RWJa8PykCXNpLxhlyWToM4g+0Vo+6Q6txrdvAOfdC0ZBaxG0qw2g==", 226 218 "bin": true 227 219 }, 228 - "debug@4.4.1": { 229 - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", 220 + "debug@4.4.3": { 221 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 230 222 "dependencies": [ 231 223 "ms" 232 224 ] ··· 234 226 "dotenv@16.6.1": { 235 227 "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==" 236 228 }, 237 - "envalid@8.1.0": { 238 - "integrity": "sha512-OT6+qVhKVyCidaGoXflb2iK1tC8pd0OV2Q+v9n33wNhUJ+lus+rJobUj4vJaQBPxPZ0vYrPGuxdrenyCAIJcow==", 229 + "envalid@8.1.1": { 230 + "integrity": "sha512-vOUfHxAFFvkBjbVQbBfgnCO9d3GcNfMMTtVfgqSU2rQGMFEVqWy9GBuoSfHnwGu7EqR0/GeukQcL3KjFBaga9w==", 239 231 "dependencies": [ 240 232 "tslib" 241 233 ] 242 234 }, 243 - "jose@6.0.12": { 244 - "integrity": "sha512-T8xypXs8CpmiIi78k0E+Lk7T2zlK4zDyg+o1CZ4AkOHgDg98ogdP2BeZ61lTFKFyoEwJ9RgAgN+SdM3iPgNonQ==" 235 + "jose@6.1.3": { 236 + "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==" 245 237 }, 246 238 "kareem@2.6.3": { 247 239 "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==" ··· 256 248 "whatwg-url" 257 249 ] 258 250 }, 259 - "mongodb@6.17.0": { 260 - "integrity": "sha512-neerUzg/8U26cgruLysKEjJvoNSXhyID3RvzvdcpsIi2COYM3FS3o9nlH7fxFtefTb942dX3W9i37oPfCVj4wA==", 251 + "mongodb@6.20.0": { 252 + "integrity": "sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==", 261 253 "dependencies": [ 262 254 "@mongodb-js/saslprep", 263 255 "bson", 264 256 "mongodb-connection-string-url" 265 257 ] 266 258 }, 267 - "mongoose@8.16.3": { 268 - "integrity": "sha512-p2JOsRQG7j0vXhLpsWw5Slm2VnDeJK8sRyqSyegk5jQujuP9BTOZ1Di9VX/0lYfBhZ2DpAExi51QTd4pIqSgig==", 259 + "mongoose@8.20.1": { 260 + "integrity": "sha512-G+n3maddlqkQrP1nXxsI0q20144OSo+pe+HzRRGqaC4yK3FLYKqejqB9cbIi+SX7eoRsnG23LHGYNp8n7mWL2Q==", 269 261 "dependencies": [ 270 262 "bson", 271 263 "kareem", ··· 328 320 "webidl-conversions" 329 321 ] 330 322 }, 331 - "zod@4.1.12": { 332 - "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==" 323 + "zod@4.1.13": { 324 + "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==" 333 325 } 334 326 }, 335 327 "workspace": { ··· 338 330 "jsr:@atp/identity@~0.1.0-alpha.1", 339 331 "jsr:@atp/lexicon@~0.1.0-alpha.2", 340 332 "jsr:@atp/syntax@~0.1.0-alpha.2", 341 - "jsr:@atp/xrpc-server@~0.1.0-alpha.2", 342 - "jsr:@hono/hono@^4.8.4", 343 - "jsr:@logtape/logtape@^1.0.4", 344 - "jsr:@logtape/pretty@^1.1.0-dev.333+b25e634b", 345 - "jsr:@sprk/xrpc-server@~0.1.5", 346 - "npm:@atproto/lexicon@~0.4.12", 347 - "npm:dotenv@^16.4.7", 348 - "npm:envalid@8", 349 - "npm:jose@^6.0.12", 350 - "npm:mongoose@^8.12.1", 351 - "npm:multiformats@^13.3.7" 333 + "jsr:@atp/xrpc-server@~0.1.0-alpha.3", 334 + "jsr:@hono/hono@^4.10.7", 335 + "jsr:@logtape/logtape@^1.2.2", 336 + "jsr:@logtape/pretty@^1.2.2", 337 + "npm:dotenv@^16.6.1", 338 + "npm:envalid@^8.1.1", 339 + "npm:jose@^6.1.3", 340 + "npm:mongoose@^8.20.1", 341 + "npm:multiformats@^13.4.1" 352 342 ] 353 343 } 354 344 }
+1046 -240
lex/index.ts
··· 6 6 createServer as createXrpcServer, 7 7 type MethodConfigOrHandler, 8 8 type Options as XrpcOptions, 9 - Server as XrpcServer, 9 + type Server as XrpcServer, 10 10 type StreamConfigOrHandler, 11 11 } from "@atp/xrpc-server"; 12 12 import { schemas } from "./lexicons.ts"; 13 - import * as ToolsOzoneSignatureFindCorrelation from "./types/tools/ozone/signature/findCorrelation.ts"; 14 - import * as ToolsOzoneSignatureSearchAccounts from "./types/tools/ozone/signature/searchAccounts.ts"; 15 - import * as ToolsOzoneSignatureFindRelatedAccounts from "./types/tools/ozone/signature/findRelatedAccounts.ts"; 16 - import * as ToolsOzoneServerGetConfig from "./types/tools/ozone/server/getConfig.ts"; 17 - import * as ToolsOzoneTeamListMembers from "./types/tools/ozone/team/listMembers.ts"; 18 - import * as ToolsOzoneTeamDeleteMember from "./types/tools/ozone/team/deleteMember.ts"; 19 - import * as ToolsOzoneTeamUpdateMember from "./types/tools/ozone/team/updateMember.ts"; 20 - import * as ToolsOzoneTeamAddMember from "./types/tools/ozone/team/addMember.ts"; 21 - import * as ToolsOzoneCommunicationUpdateTemplate from "./types/tools/ozone/communication/updateTemplate.ts"; 22 - import * as ToolsOzoneCommunicationCreateTemplate from "./types/tools/ozone/communication/createTemplate.ts"; 23 - import * as ToolsOzoneCommunicationListTemplates from "./types/tools/ozone/communication/listTemplates.ts"; 24 - import * as ToolsOzoneCommunicationDeleteTemplate from "./types/tools/ozone/communication/deleteTemplate.ts"; 25 - import * as ToolsOzoneSetAddValues from "./types/tools/ozone/set/addValues.ts"; 26 - import * as ToolsOzoneSetGetValues from "./types/tools/ozone/set/getValues.ts"; 27 - import * as ToolsOzoneSetDeleteSet from "./types/tools/ozone/set/deleteSet.ts"; 28 - import * as ToolsOzoneSetUpsertSet from "./types/tools/ozone/set/upsertSet.ts"; 29 - import * as ToolsOzoneSetDeleteValues from "./types/tools/ozone/set/deleteValues.ts"; 30 - import * as ToolsOzoneSetQuerySets from "./types/tools/ozone/set/querySets.ts"; 31 - import * as ToolsOzoneSettingListOptions from "./types/tools/ozone/setting/listOptions.ts"; 32 - import * as ToolsOzoneSettingRemoveOptions from "./types/tools/ozone/setting/removeOptions.ts"; 33 - import * as ToolsOzoneSettingUpsertOption from "./types/tools/ozone/setting/upsertOption.ts"; 34 - import * as ToolsOzoneModerationGetReporterStats from "./types/tools/ozone/moderation/getReporterStats.ts"; 35 - import * as ToolsOzoneModerationQueryStatuses from "./types/tools/ozone/moderation/queryStatuses.ts"; 36 - import * as ToolsOzoneModerationGetRepo from "./types/tools/ozone/moderation/getRepo.ts"; 37 - import * as ToolsOzoneModerationGetRecords from "./types/tools/ozone/moderation/getRecords.ts"; 38 - import * as ToolsOzoneModerationGetEvent from "./types/tools/ozone/moderation/getEvent.ts"; 39 - import * as ToolsOzoneModerationQueryEvents from "./types/tools/ozone/moderation/queryEvents.ts"; 40 - import * as ToolsOzoneModerationGetRecord from "./types/tools/ozone/moderation/getRecord.ts"; 41 - import * as ToolsOzoneModerationEmitEvent from "./types/tools/ozone/moderation/emitEvent.ts"; 42 - import * as ToolsOzoneModerationSearchRepos from "./types/tools/ozone/moderation/searchRepos.ts"; 43 - import * as ToolsOzoneModerationGetRepos from "./types/tools/ozone/moderation/getRepos.ts"; 44 - import * as AppBskyVideoUploadVideo from "./types/app/bsky/video/uploadVideo.ts"; 45 - import * as AppBskyVideoGetJobStatus from "./types/app/bsky/video/getJobStatus.ts"; 46 - import * as AppBskyVideoGetUploadLimits from "./types/app/bsky/video/getUploadLimits.ts"; 47 - import * as AppBskyNotificationRegisterPush from "./types/app/bsky/notification/registerPush.ts"; 48 - import * as AppBskyNotificationPutPreferences from "./types/app/bsky/notification/putPreferences.ts"; 49 - import * as AppBskyNotificationUpdateSeen from "./types/app/bsky/notification/updateSeen.ts"; 50 - import * as AppBskyNotificationListNotifications from "./types/app/bsky/notification/listNotifications.ts"; 51 - import * as AppBskyNotificationGetUnreadCount from "./types/app/bsky/notification/getUnreadCount.ts"; 52 - import * as AppBskyUnspeccedSearchStarterPacksSkeleton from "./types/app/bsky/unspecced/searchStarterPacksSkeleton.ts"; 53 - import * as AppBskyUnspeccedSearchActorsSkeleton from "./types/app/bsky/unspecced/searchActorsSkeleton.ts"; 54 - import * as AppBskyUnspeccedGetSuggestionsSkeleton from "./types/app/bsky/unspecced/getSuggestionsSkeleton.ts"; 55 - import * as AppBskyUnspeccedSearchPostsSkeleton from "./types/app/bsky/unspecced/searchPostsSkeleton.ts"; 56 - import * as AppBskyUnspeccedGetPopularFeedGenerators from "./types/app/bsky/unspecced/getPopularFeedGenerators.ts"; 57 - import * as AppBskyUnspeccedGetTrendingTopics from "./types/app/bsky/unspecced/getTrendingTopics.ts"; 58 - import * as AppBskyUnspeccedGetTaggedSuggestions from "./types/app/bsky/unspecced/getTaggedSuggestions.ts"; 59 - import * as AppBskyUnspeccedGetConfig from "./types/app/bsky/unspecced/getConfig.ts"; 60 - import * as AppBskyGraphGetStarterPacks from "./types/app/bsky/graph/getStarterPacks.ts"; 61 - import * as AppBskyGraphGetSuggestedFollowsByActor from "./types/app/bsky/graph/getSuggestedFollowsByActor.ts"; 62 - import * as AppBskyGraphUnmuteActorList from "./types/app/bsky/graph/unmuteActorList.ts"; 63 - import * as AppBskyGraphGetListBlocks from "./types/app/bsky/graph/getListBlocks.ts"; 64 - import * as AppBskyGraphGetStarterPack from "./types/app/bsky/graph/getStarterPack.ts"; 65 - import * as AppBskyGraphMuteActorList from "./types/app/bsky/graph/muteActorList.ts"; 66 - import * as AppBskyGraphMuteThread from "./types/app/bsky/graph/muteThread.ts"; 67 - import * as AppBskyGraphSearchStarterPacks from "./types/app/bsky/graph/searchStarterPacks.ts"; 68 - import * as AppBskyGraphGetActorStarterPacks from "./types/app/bsky/graph/getActorStarterPacks.ts"; 69 - import * as AppBskyGraphGetLists from "./types/app/bsky/graph/getLists.ts"; 70 - import * as AppBskyGraphGetFollowers from "./types/app/bsky/graph/getFollowers.ts"; 71 - import * as AppBskyGraphUnmuteThread from "./types/app/bsky/graph/unmuteThread.ts"; 72 - import * as AppBskyGraphMuteActor from "./types/app/bsky/graph/muteActor.ts"; 73 - import * as AppBskyGraphGetMutes from "./types/app/bsky/graph/getMutes.ts"; 74 - import * as AppBskyGraphGetKnownFollowers from "./types/app/bsky/graph/getKnownFollowers.ts"; 75 - import * as AppBskyGraphGetListMutes from "./types/app/bsky/graph/getListMutes.ts"; 76 - import * as AppBskyGraphGetFollows from "./types/app/bsky/graph/getFollows.ts"; 77 - import * as AppBskyGraphGetBlocks from "./types/app/bsky/graph/getBlocks.ts"; 78 - import * as AppBskyGraphGetRelationships from "./types/app/bsky/graph/getRelationships.ts"; 79 - import * as AppBskyGraphUnmuteActor from "./types/app/bsky/graph/unmuteActor.ts"; 80 - import * as AppBskyGraphGetList from "./types/app/bsky/graph/getList.ts"; 81 - import * as AppBskyFeedSendInteractions from "./types/app/bsky/feed/sendInteractions.ts"; 82 - import * as AppBskyFeedGetFeedGenerators from "./types/app/bsky/feed/getFeedGenerators.ts"; 83 - import * as AppBskyFeedGetTimeline from "./types/app/bsky/feed/getTimeline.ts"; 84 - import * as AppBskyFeedGetFeedGenerator from "./types/app/bsky/feed/getFeedGenerator.ts"; 85 - import * as AppBskyFeedGetAuthorFeed from "./types/app/bsky/feed/getAuthorFeed.ts"; 86 - import * as AppBskyFeedGetLikes from "./types/app/bsky/feed/getLikes.ts"; 87 - import * as AppBskyFeedGetPostThread from "./types/app/bsky/feed/getPostThread.ts"; 88 - import * as AppBskyFeedGetActorLikes from "./types/app/bsky/feed/getActorLikes.ts"; 89 - import * as AppBskyFeedGetRepostedBy from "./types/app/bsky/feed/getRepostedBy.ts"; 90 - import * as AppBskyFeedDescribeFeedGenerator from "./types/app/bsky/feed/describeFeedGenerator.ts"; 91 - import * as AppBskyFeedSearchPosts from "./types/app/bsky/feed/searchPosts.ts"; 92 - import * as AppBskyFeedGetPosts from "./types/app/bsky/feed/getPosts.ts"; 93 - import * as AppBskyFeedGetFeed from "./types/app/bsky/feed/getFeed.ts"; 94 - import * as AppBskyFeedGetQuotes from "./types/app/bsky/feed/getQuotes.ts"; 95 - import * as AppBskyFeedGetFeedSkeleton from "./types/app/bsky/feed/getFeedSkeleton.ts"; 96 - import * as AppBskyFeedGetListFeed from "./types/app/bsky/feed/getListFeed.ts"; 97 - import * as AppBskyFeedGetSuggestedFeeds from "./types/app/bsky/feed/getSuggestedFeeds.ts"; 98 - import * as AppBskyFeedGetActorFeeds from "./types/app/bsky/feed/getActorFeeds.ts"; 99 - import * as AppBskyActorSearchActorsTypeahead from "./types/app/bsky/actor/searchActorsTypeahead.ts"; 100 - import * as AppBskyActorPutPreferences from "./types/app/bsky/actor/putPreferences.ts"; 101 - import * as AppBskyActorGetProfile from "./types/app/bsky/actor/getProfile.ts"; 102 - import * as AppBskyActorGetSuggestions from "./types/app/bsky/actor/getSuggestions.ts"; 103 - import * as AppBskyActorSearchActors from "./types/app/bsky/actor/searchActors.ts"; 104 - import * as AppBskyActorGetProfiles from "./types/app/bsky/actor/getProfiles.ts"; 105 - import * as AppBskyActorGetPreferences from "./types/app/bsky/actor/getPreferences.ts"; 106 - import * as AppBskyLabelerGetServices from "./types/app/bsky/labeler/getServices.ts"; 107 - import * as ChatBskyConvoListConvos from "./types/chat/bsky/convo/listConvos.ts"; 108 - import * as ChatBskyConvoUnmuteConvo from "./types/chat/bsky/convo/unmuteConvo.ts"; 109 - import * as ChatBskyConvoGetConvoAvailability from "./types/chat/bsky/convo/getConvoAvailability.ts"; 110 - import * as ChatBskyConvoGetLog from "./types/chat/bsky/convo/getLog.ts"; 111 - import * as ChatBskyConvoSendMessage from "./types/chat/bsky/convo/sendMessage.ts"; 112 - import * as ChatBskyConvoLeaveConvo from "./types/chat/bsky/convo/leaveConvo.ts"; 113 - import * as ChatBskyConvoAcceptConvo from "./types/chat/bsky/convo/acceptConvo.ts"; 114 - import * as ChatBskyConvoMuteConvo from "./types/chat/bsky/convo/muteConvo.ts"; 115 - import * as ChatBskyConvoDeleteMessageForSelf from "./types/chat/bsky/convo/deleteMessageForSelf.ts"; 116 - import * as ChatBskyConvoUpdateRead from "./types/chat/bsky/convo/updateRead.ts"; 117 - import * as ChatBskyConvoUpdateAllRead from "./types/chat/bsky/convo/updateAllRead.ts"; 118 - import * as ChatBskyConvoGetConvo from "./types/chat/bsky/convo/getConvo.ts"; 119 - import * as ChatBskyConvoGetMessages from "./types/chat/bsky/convo/getMessages.ts"; 120 - import * as ChatBskyConvoGetConvoForMembers from "./types/chat/bsky/convo/getConvoForMembers.ts"; 121 - import * as ChatBskyConvoSendMessageBatch from "./types/chat/bsky/convo/sendMessageBatch.ts"; 122 - import * as ChatBskyActorExportAccountData from "./types/chat/bsky/actor/exportAccountData.ts"; 123 - import * as ChatBskyActorDeleteAccount from "./types/chat/bsky/actor/deleteAccount.ts"; 124 - import * as ChatBskyModerationGetActorMetadata from "./types/chat/bsky/moderation/getActorMetadata.ts"; 125 - import * as ChatBskyModerationGetMessageContext from "./types/chat/bsky/moderation/getMessageContext.ts"; 126 - import * as ChatBskyModerationUpdateActorAccess from "./types/chat/bsky/moderation/updateActorAccess.ts"; 127 - import * as SoSprkVideoUploadVideo from "./types/so/sprk/video/uploadVideo.ts"; 128 - import * as SoSprkVideoGetJobStatus from "./types/so/sprk/video/getJobStatus.ts"; 129 - import * as SoSprkVideoGetUploadLimits from "./types/so/sprk/video/getUploadLimits.ts"; 130 - import * as SoSprkNotificationRegisterPush from "./types/so/sprk/notification/registerPush.ts"; 131 - import * as SoSprkNotificationPutPreferences from "./types/so/sprk/notification/putPreferences.ts"; 132 - import * as SoSprkNotificationUpdateSeen from "./types/so/sprk/notification/updateSeen.ts"; 133 - import * as SoSprkNotificationListNotifications from "./types/so/sprk/notification/listNotifications.ts"; 134 - import * as SoSprkNotificationGetUnreadCount from "./types/so/sprk/notification/getUnreadCount.ts"; 135 - import * as SoSprkGraphGetSuggestedFollowsByActor from "./types/so/sprk/graph/getSuggestedFollowsByActor.ts"; 136 - import * as SoSprkGraphMuteThread from "./types/so/sprk/graph/muteThread.ts"; 137 - import * as SoSprkGraphGetFollowers from "./types/so/sprk/graph/getFollowers.ts"; 138 - import * as SoSprkGraphUnmuteThread from "./types/so/sprk/graph/unmuteThread.ts"; 139 - import * as SoSprkGraphMuteActor from "./types/so/sprk/graph/muteActor.ts"; 140 - import * as SoSprkGraphGetMutes from "./types/so/sprk/graph/getMutes.ts"; 141 - import * as SoSprkGraphGetKnownFollowers from "./types/so/sprk/graph/getKnownFollowers.ts"; 142 - import * as SoSprkGraphGetFollows from "./types/so/sprk/graph/getFollows.ts"; 143 - import * as SoSprkGraphGetBlocks from "./types/so/sprk/graph/getBlocks.ts"; 144 - import * as SoSprkGraphGetRelationships from "./types/so/sprk/graph/getRelationships.ts"; 145 - import * as SoSprkGraphUnmuteActor from "./types/so/sprk/graph/unmuteActor.ts"; 146 - import * as SoSprkFeedSendInteractions from "./types/so/sprk/feed/sendInteractions.ts"; 147 - import * as SoSprkFeedGetFeedGenerators from "./types/so/sprk/feed/getFeedGenerators.ts"; 148 - import * as SoSprkFeedGetTimeline from "./types/so/sprk/feed/getTimeline.ts"; 149 - import * as SoSprkFeedGetFeedGenerator from "./types/so/sprk/feed/getFeedGenerator.ts"; 150 - import * as SoSprkFeedGetAuthorFeed from "./types/so/sprk/feed/getAuthorFeed.ts"; 151 - import * as SoSprkFeedGetLikes from "./types/so/sprk/feed/getLikes.ts"; 152 - import * as SoSprkFeedGetPostThread from "./types/so/sprk/feed/getPostThread.ts"; 153 - import * as SoSprkFeedGetActorLikes from "./types/so/sprk/feed/getActorLikes.ts"; 154 - import * as SoSprkFeedGetRepostedBy from "./types/so/sprk/feed/getRepostedBy.ts"; 155 - import * as SoSprkFeedDescribeFeedGenerator from "./types/so/sprk/feed/describeFeedGenerator.ts"; 156 - import * as SoSprkFeedSearchPosts from "./types/so/sprk/feed/searchPosts.ts"; 157 - import * as SoSprkFeedGetPosts from "./types/so/sprk/feed/getPosts.ts"; 158 - import * as SoSprkFeedGetFeed from "./types/so/sprk/feed/getFeed.ts"; 159 - import * as SoSprkFeedGetFeedSkeleton from "./types/so/sprk/feed/getFeedSkeleton.ts"; 160 - import * as SoSprkFeedGetSuggestedFeeds from "./types/so/sprk/feed/getSuggestedFeeds.ts"; 161 - import * as SoSprkFeedGetActorFeeds from "./types/so/sprk/feed/getActorFeeds.ts"; 162 - import * as SoSprkSoundGetActorAudios from "./types/so/sprk/sound/getActorAudios.ts"; 163 - import * as SoSprkSoundGetAudioPosts from "./types/so/sprk/sound/getAudioPosts.ts"; 164 - import * as SoSprkSoundGetAudios from "./types/so/sprk/sound/getAudios.ts"; 165 - import * as SoSprkSoundGetTrendingAudios from "./types/so/sprk/sound/getTrendingAudios.ts"; 166 - import * as SoSprkActorSearchActorsTypeahead from "./types/so/sprk/actor/searchActorsTypeahead.ts"; 167 - import * as SoSprkActorPutPreferences from "./types/so/sprk/actor/putPreferences.ts"; 168 - import * as SoSprkActorGetProfile from "./types/so/sprk/actor/getProfile.ts"; 169 - import * as SoSprkActorGetSuggestions from "./types/so/sprk/actor/getSuggestions.ts"; 170 - import * as SoSprkActorSearchActors from "./types/so/sprk/actor/searchActors.ts"; 171 - import * as SoSprkActorGetProfiles from "./types/so/sprk/actor/getProfiles.ts"; 172 - import * as SoSprkActorGetPreferences from "./types/so/sprk/actor/getPreferences.ts"; 173 - import * as SoSprkStoryGetTimeline from "./types/so/sprk/story/getTimeline.ts"; 174 - import * as SoSprkStoryGetStories from "./types/so/sprk/story/getStories.ts"; 175 - import * as SoSprkLabelerGetServices from "./types/so/sprk/labeler/getServices.ts"; 176 - import * as ComAtprotoTempAddReservedHandle from "./types/com/atproto/temp/addReservedHandle.ts"; 177 - import * as ComAtprotoTempCheckSignupQueue from "./types/com/atproto/temp/checkSignupQueue.ts"; 178 - import * as ComAtprotoTempRequestPhoneVerification from "./types/com/atproto/temp/requestPhoneVerification.ts"; 179 - import * as ComAtprotoTempFetchLabels from "./types/com/atproto/temp/fetchLabels.ts"; 180 - import * as ComAtprotoIdentityUpdateHandle from "./types/com/atproto/identity/updateHandle.ts"; 181 - import * as ComAtprotoIdentitySignPlcOperation from "./types/com/atproto/identity/signPlcOperation.ts"; 182 - import * as ComAtprotoIdentitySubmitPlcOperation from "./types/com/atproto/identity/submitPlcOperation.ts"; 183 - import * as ComAtprotoIdentityResolveHandle from "./types/com/atproto/identity/resolveHandle.ts"; 184 - import * as ComAtprotoIdentityRequestPlcOperationSignature from "./types/com/atproto/identity/requestPlcOperationSignature.ts"; 185 - import * as ComAtprotoIdentityGetRecommendedDidCredentials from "./types/com/atproto/identity/getRecommendedDidCredentials.ts"; 186 - import * as ComAtprotoAdminUpdateAccountEmail from "./types/com/atproto/admin/updateAccountEmail.ts"; 187 - import * as ComAtprotoAdminGetAccountInfo from "./types/com/atproto/admin/getAccountInfo.ts"; 188 - import * as ComAtprotoAdminGetSubjectStatus from "./types/com/atproto/admin/getSubjectStatus.ts"; 189 - import * as ComAtprotoAdminSearchAccounts from "./types/com/atproto/admin/searchAccounts.ts"; 190 - import * as ComAtprotoAdminUpdateAccountPassword from "./types/com/atproto/admin/updateAccountPassword.ts"; 191 - import * as ComAtprotoAdminUpdateAccountHandle from "./types/com/atproto/admin/updateAccountHandle.ts"; 192 - import * as ComAtprotoAdminGetInviteCodes from "./types/com/atproto/admin/getInviteCodes.ts"; 193 - import * as ComAtprotoAdminEnableAccountInvites from "./types/com/atproto/admin/enableAccountInvites.ts"; 194 - import * as ComAtprotoAdminDisableAccountInvites from "./types/com/atproto/admin/disableAccountInvites.ts"; 195 - import * as ComAtprotoAdminDisableInviteCodes from "./types/com/atproto/admin/disableInviteCodes.ts"; 196 - import * as ComAtprotoAdminUpdateSubjectStatus from "./types/com/atproto/admin/updateSubjectStatus.ts"; 197 - import * as ComAtprotoAdminSendEmail from "./types/com/atproto/admin/sendEmail.ts"; 198 - import * as ComAtprotoAdminGetAccountInfos from "./types/com/atproto/admin/getAccountInfos.ts"; 199 - import * as ComAtprotoAdminDeleteAccount from "./types/com/atproto/admin/deleteAccount.ts"; 200 - import * as ComAtprotoLabelSubscribeLabels from "./types/com/atproto/label/subscribeLabels.ts"; 201 - import * as ComAtprotoLabelQueryLabels from "./types/com/atproto/label/queryLabels.ts"; 202 - import * as ComAtprotoServerRequestEmailConfirmation from "./types/com/atproto/server/requestEmailConfirmation.ts"; 203 - import * as ComAtprotoServerReserveSigningKey from "./types/com/atproto/server/reserveSigningKey.ts"; 204 - import * as ComAtprotoServerGetServiceAuth from "./types/com/atproto/server/getServiceAuth.ts"; 205 - import * as ComAtprotoServerGetAccountInviteCodes from "./types/com/atproto/server/getAccountInviteCodes.ts"; 206 - import * as ComAtprotoServerCreateSession from "./types/com/atproto/server/createSession.ts"; 207 - import * as ComAtprotoServerListAppPasswords from "./types/com/atproto/server/listAppPasswords.ts"; 208 - import * as ComAtprotoServerCreateInviteCodes from "./types/com/atproto/server/createInviteCodes.ts"; 209 - import * as ComAtprotoServerDeleteSession from "./types/com/atproto/server/deleteSession.ts"; 210 - import * as ComAtprotoServerRevokeAppPassword from "./types/com/atproto/server/revokeAppPassword.ts"; 211 - import * as ComAtprotoServerCreateAppPassword from "./types/com/atproto/server/createAppPassword.ts"; 212 - import * as ComAtprotoServerActivateAccount from "./types/com/atproto/server/activateAccount.ts"; 213 - import * as ComAtprotoServerDescribeServer from "./types/com/atproto/server/describeServer.ts"; 214 - import * as ComAtprotoServerConfirmEmail from "./types/com/atproto/server/confirmEmail.ts"; 215 - import * as ComAtprotoServerGetSession from "./types/com/atproto/server/getSession.ts"; 216 - import * as ComAtprotoServerRefreshSession from "./types/com/atproto/server/refreshSession.ts"; 217 - import * as ComAtprotoServerDeactivateAccount from "./types/com/atproto/server/deactivateAccount.ts"; 218 - import * as ComAtprotoServerUpdateEmail from "./types/com/atproto/server/updateEmail.ts"; 219 - import * as ComAtprotoServerResetPassword from "./types/com/atproto/server/resetPassword.ts"; 220 - import * as ComAtprotoServerCheckAccountStatus from "./types/com/atproto/server/checkAccountStatus.ts"; 221 - import * as ComAtprotoServerRequestEmailUpdate from "./types/com/atproto/server/requestEmailUpdate.ts"; 222 - import * as ComAtprotoServerRequestPasswordReset from "./types/com/atproto/server/requestPasswordReset.ts"; 223 - import * as ComAtprotoServerRequestAccountDelete from "./types/com/atproto/server/requestAccountDelete.ts"; 224 - import * as ComAtprotoServerCreateAccount from "./types/com/atproto/server/createAccount.ts"; 225 - import * as ComAtprotoServerDeleteAccount from "./types/com/atproto/server/deleteAccount.ts"; 226 - import * as ComAtprotoServerCreateInviteCode from "./types/com/atproto/server/createInviteCode.ts"; 227 - import * as ComAtprotoSyncGetHead from "./types/com/atproto/sync/getHead.ts"; 228 - import * as ComAtprotoSyncGetBlob from "./types/com/atproto/sync/getBlob.ts"; 229 - import * as ComAtprotoSyncGetRepo from "./types/com/atproto/sync/getRepo.ts"; 230 - import * as ComAtprotoSyncNotifyOfUpdate from "./types/com/atproto/sync/notifyOfUpdate.ts"; 231 - import * as ComAtprotoSyncRequestCrawl from "./types/com/atproto/sync/requestCrawl.ts"; 232 - import * as ComAtprotoSyncListBlobs from "./types/com/atproto/sync/listBlobs.ts"; 233 - import * as ComAtprotoSyncGetLatestCommit from "./types/com/atproto/sync/getLatestCommit.ts"; 234 - import * as ComAtprotoSyncSubscribeRepos from "./types/com/atproto/sync/subscribeRepos.ts"; 235 - import * as ComAtprotoSyncGetRepoStatus from "./types/com/atproto/sync/getRepoStatus.ts"; 236 - import * as ComAtprotoSyncGetRecord from "./types/com/atproto/sync/getRecord.ts"; 237 - import * as ComAtprotoSyncListRepos from "./types/com/atproto/sync/listRepos.ts"; 238 - import * as ComAtprotoSyncGetBlocks from "./types/com/atproto/sync/getBlocks.ts"; 239 - import * as ComAtprotoSyncListReposByCollection from "./types/com/atproto/sync/listReposByCollection.ts"; 240 - import * as ComAtprotoSyncGetCheckout from "./types/com/atproto/sync/getCheckout.ts"; 241 - import * as ComAtprotoRepoListMissingBlobs from "./types/com/atproto/repo/listMissingBlobs.ts"; 242 - import * as ComAtprotoRepoCreateRecord from "./types/com/atproto/repo/createRecord.ts"; 243 - import * as ComAtprotoRepoDeleteRecord from "./types/com/atproto/repo/deleteRecord.ts"; 244 - import * as ComAtprotoRepoPutRecord from "./types/com/atproto/repo/putRecord.ts"; 245 - import * as ComAtprotoRepoUploadBlob from "./types/com/atproto/repo/uploadBlob.ts"; 246 - import * as ComAtprotoRepoImportRepo from "./types/com/atproto/repo/importRepo.ts"; 247 - import * as ComAtprotoRepoDescribeRepo from "./types/com/atproto/repo/describeRepo.ts"; 248 - import * as ComAtprotoRepoGetRecord from "./types/com/atproto/repo/getRecord.ts"; 249 - import * as ComAtprotoRepoApplyWrites from "./types/com/atproto/repo/applyWrites.ts"; 250 - import * as ComAtprotoRepoListRecords from "./types/com/atproto/repo/listRecords.ts"; 251 - import * as ComAtprotoModerationCreateReport from "./types/com/atproto/moderation/createReport.ts"; 13 + import type * as ToolsOzoneSignatureFindCorrelation from "./types/tools/ozone/signature/findCorrelation.ts"; 14 + import type * as ToolsOzoneSignatureSearchAccounts from "./types/tools/ozone/signature/searchAccounts.ts"; 15 + import type * as ToolsOzoneSignatureFindRelatedAccounts from "./types/tools/ozone/signature/findRelatedAccounts.ts"; 16 + import type * as ToolsOzoneServerGetConfig from "./types/tools/ozone/server/getConfig.ts"; 17 + import type * as ToolsOzoneVerificationRevokeVerifications from "./types/tools/ozone/verification/revokeVerifications.ts"; 18 + import type * as ToolsOzoneVerificationGrantVerifications from "./types/tools/ozone/verification/grantVerifications.ts"; 19 + import type * as ToolsOzoneVerificationListVerifications from "./types/tools/ozone/verification/listVerifications.ts"; 20 + import type * as ToolsOzoneSafelinkAddRule from "./types/tools/ozone/safelink/addRule.ts"; 21 + import type * as ToolsOzoneSafelinkRemoveRule from "./types/tools/ozone/safelink/removeRule.ts"; 22 + import type * as ToolsOzoneSafelinkUpdateRule from "./types/tools/ozone/safelink/updateRule.ts"; 23 + import type * as ToolsOzoneSafelinkQueryEvents from "./types/tools/ozone/safelink/queryEvents.ts"; 24 + import type * as ToolsOzoneSafelinkQueryRules from "./types/tools/ozone/safelink/queryRules.ts"; 25 + import type * as ToolsOzoneTeamListMembers from "./types/tools/ozone/team/listMembers.ts"; 26 + import type * as ToolsOzoneTeamDeleteMember from "./types/tools/ozone/team/deleteMember.ts"; 27 + import type * as ToolsOzoneTeamUpdateMember from "./types/tools/ozone/team/updateMember.ts"; 28 + import type * as ToolsOzoneTeamAddMember from "./types/tools/ozone/team/addMember.ts"; 29 + import type * as ToolsOzoneHostingGetAccountHistory from "./types/tools/ozone/hosting/getAccountHistory.ts"; 30 + import type * as ToolsOzoneCommunicationUpdateTemplate from "./types/tools/ozone/communication/updateTemplate.ts"; 31 + import type * as ToolsOzoneCommunicationCreateTemplate from "./types/tools/ozone/communication/createTemplate.ts"; 32 + import type * as ToolsOzoneCommunicationListTemplates from "./types/tools/ozone/communication/listTemplates.ts"; 33 + import type * as ToolsOzoneCommunicationDeleteTemplate from "./types/tools/ozone/communication/deleteTemplate.ts"; 34 + import type * as ToolsOzoneSetAddValues from "./types/tools/ozone/set/addValues.ts"; 35 + import type * as ToolsOzoneSetGetValues from "./types/tools/ozone/set/getValues.ts"; 36 + import type * as ToolsOzoneSetDeleteSet from "./types/tools/ozone/set/deleteSet.ts"; 37 + import type * as ToolsOzoneSetUpsertSet from "./types/tools/ozone/set/upsertSet.ts"; 38 + import type * as ToolsOzoneSetDeleteValues from "./types/tools/ozone/set/deleteValues.ts"; 39 + import type * as ToolsOzoneSetQuerySets from "./types/tools/ozone/set/querySets.ts"; 40 + import type * as ToolsOzoneSettingListOptions from "./types/tools/ozone/setting/listOptions.ts"; 41 + import type * as ToolsOzoneSettingRemoveOptions from "./types/tools/ozone/setting/removeOptions.ts"; 42 + import type * as ToolsOzoneSettingUpsertOption from "./types/tools/ozone/setting/upsertOption.ts"; 43 + import type * as ToolsOzoneModerationGetReporterStats from "./types/tools/ozone/moderation/getReporterStats.ts"; 44 + import type * as ToolsOzoneModerationCancelScheduledActions from "./types/tools/ozone/moderation/cancelScheduledActions.ts"; 45 + import type * as ToolsOzoneModerationListScheduledActions from "./types/tools/ozone/moderation/listScheduledActions.ts"; 46 + import type * as ToolsOzoneModerationQueryStatuses from "./types/tools/ozone/moderation/queryStatuses.ts"; 47 + import type * as ToolsOzoneModerationGetRepo from "./types/tools/ozone/moderation/getRepo.ts"; 48 + import type * as ToolsOzoneModerationGetSubjects from "./types/tools/ozone/moderation/getSubjects.ts"; 49 + import type * as ToolsOzoneModerationGetRecords from "./types/tools/ozone/moderation/getRecords.ts"; 50 + import type * as ToolsOzoneModerationScheduleAction from "./types/tools/ozone/moderation/scheduleAction.ts"; 51 + import type * as ToolsOzoneModerationGetEvent from "./types/tools/ozone/moderation/getEvent.ts"; 52 + import type * as ToolsOzoneModerationQueryEvents from "./types/tools/ozone/moderation/queryEvents.ts"; 53 + import type * as ToolsOzoneModerationGetRecord from "./types/tools/ozone/moderation/getRecord.ts"; 54 + import type * as ToolsOzoneModerationEmitEvent from "./types/tools/ozone/moderation/emitEvent.ts"; 55 + import type * as ToolsOzoneModerationSearchRepos from "./types/tools/ozone/moderation/searchRepos.ts"; 56 + import type * as ToolsOzoneModerationGetAccountTimeline from "./types/tools/ozone/moderation/getAccountTimeline.ts"; 57 + import type * as ToolsOzoneModerationGetRepos from "./types/tools/ozone/moderation/getRepos.ts"; 58 + import type * as AppBskyVideoUploadVideo from "./types/app/bsky/video/uploadVideo.ts"; 59 + import type * as AppBskyVideoGetJobStatus from "./types/app/bsky/video/getJobStatus.ts"; 60 + import type * as AppBskyVideoGetUploadLimits from "./types/app/bsky/video/getUploadLimits.ts"; 61 + import type * as AppBskyBookmarkDeleteBookmark from "./types/app/bsky/bookmark/deleteBookmark.ts"; 62 + import type * as AppBskyBookmarkGetBookmarks from "./types/app/bsky/bookmark/getBookmarks.ts"; 63 + import type * as AppBskyBookmarkCreateBookmark from "./types/app/bsky/bookmark/createBookmark.ts"; 64 + import type * as AppBskyNotificationRegisterPush from "./types/app/bsky/notification/registerPush.ts"; 65 + import type * as AppBskyNotificationPutPreferences from "./types/app/bsky/notification/putPreferences.ts"; 66 + import type * as AppBskyNotificationPutActivitySubscription from "./types/app/bsky/notification/putActivitySubscription.ts"; 67 + import type * as AppBskyNotificationPutPreferencesV2 from "./types/app/bsky/notification/putPreferencesV2.ts"; 68 + import type * as AppBskyNotificationUpdateSeen from "./types/app/bsky/notification/updateSeen.ts"; 69 + import type * as AppBskyNotificationListActivitySubscriptions from "./types/app/bsky/notification/listActivitySubscriptions.ts"; 70 + import type * as AppBskyNotificationUnregisterPush from "./types/app/bsky/notification/unregisterPush.ts"; 71 + import type * as AppBskyNotificationGetPreferences from "./types/app/bsky/notification/getPreferences.ts"; 72 + import type * as AppBskyNotificationListNotifications from "./types/app/bsky/notification/listNotifications.ts"; 73 + import type * as AppBskyNotificationGetUnreadCount from "./types/app/bsky/notification/getUnreadCount.ts"; 74 + import type * as AppBskyUnspeccedGetSuggestedFeedsSkeleton from "./types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts"; 75 + import type * as AppBskyUnspeccedSearchStarterPacksSkeleton from "./types/app/bsky/unspecced/searchStarterPacksSkeleton.ts"; 76 + import type * as AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton from "./types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.ts"; 77 + import type * as AppBskyUnspeccedGetSuggestedUsers from "./types/app/bsky/unspecced/getSuggestedUsers.ts"; 78 + import type * as AppBskyUnspeccedGetPostThreadOtherV2 from "./types/app/bsky/unspecced/getPostThreadOtherV2.ts"; 79 + import type * as AppBskyUnspeccedGetSuggestedStarterPacks from "./types/app/bsky/unspecced/getSuggestedStarterPacks.ts"; 80 + import type * as AppBskyUnspeccedGetSuggestedStarterPacksSkeleton from "./types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts"; 81 + import type * as AppBskyUnspeccedGetOnboardingSuggestedStarterPacks from "./types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts"; 82 + import type * as AppBskyUnspeccedGetSuggestedUsersSkeleton from "./types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts"; 83 + import type * as AppBskyUnspeccedGetPostThreadV2 from "./types/app/bsky/unspecced/getPostThreadV2.ts"; 84 + import type * as AppBskyUnspeccedGetTrends from "./types/app/bsky/unspecced/getTrends.ts"; 85 + import type * as AppBskyUnspeccedSearchActorsSkeleton from "./types/app/bsky/unspecced/searchActorsSkeleton.ts"; 86 + import type * as AppBskyUnspeccedGetSuggestionsSkeleton from "./types/app/bsky/unspecced/getSuggestionsSkeleton.ts"; 87 + import type * as AppBskyUnspeccedSearchPostsSkeleton from "./types/app/bsky/unspecced/searchPostsSkeleton.ts"; 88 + import type * as AppBskyUnspeccedGetAgeAssuranceState from "./types/app/bsky/unspecced/getAgeAssuranceState.ts"; 89 + import type * as AppBskyUnspeccedGetPopularFeedGenerators from "./types/app/bsky/unspecced/getPopularFeedGenerators.ts"; 90 + import type * as AppBskyUnspeccedInitAgeAssurance from "./types/app/bsky/unspecced/initAgeAssurance.ts"; 91 + import type * as AppBskyUnspeccedGetTrendingTopics from "./types/app/bsky/unspecced/getTrendingTopics.ts"; 92 + import type * as AppBskyUnspeccedGetTaggedSuggestions from "./types/app/bsky/unspecced/getTaggedSuggestions.ts"; 93 + import type * as AppBskyUnspeccedGetSuggestedFeeds from "./types/app/bsky/unspecced/getSuggestedFeeds.ts"; 94 + import type * as AppBskyUnspeccedGetTrendsSkeleton from "./types/app/bsky/unspecced/getTrendsSkeleton.ts"; 95 + import type * as AppBskyUnspeccedGetConfig from "./types/app/bsky/unspecced/getConfig.ts"; 96 + import type * as AppBskyGraphGetStarterPacks from "./types/app/bsky/graph/getStarterPacks.ts"; 97 + import type * as AppBskyGraphGetSuggestedFollowsByActor from "./types/app/bsky/graph/getSuggestedFollowsByActor.ts"; 98 + import type * as AppBskyGraphGetStarterPacksWithMembership from "./types/app/bsky/graph/getStarterPacksWithMembership.ts"; 99 + import type * as AppBskyGraphGetListsWithMembership from "./types/app/bsky/graph/getListsWithMembership.ts"; 100 + import type * as AppBskyGraphUnmuteActorList from "./types/app/bsky/graph/unmuteActorList.ts"; 101 + import type * as AppBskyGraphGetListBlocks from "./types/app/bsky/graph/getListBlocks.ts"; 102 + import type * as AppBskyGraphGetStarterPack from "./types/app/bsky/graph/getStarterPack.ts"; 103 + import type * as AppBskyGraphMuteActorList from "./types/app/bsky/graph/muteActorList.ts"; 104 + import type * as AppBskyGraphMuteThread from "./types/app/bsky/graph/muteThread.ts"; 105 + import type * as AppBskyGraphSearchStarterPacks from "./types/app/bsky/graph/searchStarterPacks.ts"; 106 + import type * as AppBskyGraphGetActorStarterPacks from "./types/app/bsky/graph/getActorStarterPacks.ts"; 107 + import type * as AppBskyGraphGetLists from "./types/app/bsky/graph/getLists.ts"; 108 + import type * as AppBskyGraphGetFollowers from "./types/app/bsky/graph/getFollowers.ts"; 109 + import type * as AppBskyGraphUnmuteThread from "./types/app/bsky/graph/unmuteThread.ts"; 110 + import type * as AppBskyGraphMuteActor from "./types/app/bsky/graph/muteActor.ts"; 111 + import type * as AppBskyGraphGetMutes from "./types/app/bsky/graph/getMutes.ts"; 112 + import type * as AppBskyGraphGetKnownFollowers from "./types/app/bsky/graph/getKnownFollowers.ts"; 113 + import type * as AppBskyGraphGetListMutes from "./types/app/bsky/graph/getListMutes.ts"; 114 + import type * as AppBskyGraphGetFollows from "./types/app/bsky/graph/getFollows.ts"; 115 + import type * as AppBskyGraphGetBlocks from "./types/app/bsky/graph/getBlocks.ts"; 116 + import type * as AppBskyGraphGetRelationships from "./types/app/bsky/graph/getRelationships.ts"; 117 + import type * as AppBskyGraphUnmuteActor from "./types/app/bsky/graph/unmuteActor.ts"; 118 + import type * as AppBskyGraphGetList from "./types/app/bsky/graph/getList.ts"; 119 + import type * as AppBskyFeedSendInteractions from "./types/app/bsky/feed/sendInteractions.ts"; 120 + import type * as AppBskyFeedGetFeedGenerators from "./types/app/bsky/feed/getFeedGenerators.ts"; 121 + import type * as AppBskyFeedGetTimeline from "./types/app/bsky/feed/getTimeline.ts"; 122 + import type * as AppBskyFeedGetFeedGenerator from "./types/app/bsky/feed/getFeedGenerator.ts"; 123 + import type * as AppBskyFeedGetAuthorFeed from "./types/app/bsky/feed/getAuthorFeed.ts"; 124 + import type * as AppBskyFeedGetLikes from "./types/app/bsky/feed/getLikes.ts"; 125 + import type * as AppBskyFeedGetPostThread from "./types/app/bsky/feed/getPostThread.ts"; 126 + import type * as AppBskyFeedGetActorLikes from "./types/app/bsky/feed/getActorLikes.ts"; 127 + import type * as AppBskyFeedGetRepostedBy from "./types/app/bsky/feed/getRepostedBy.ts"; 128 + import type * as AppBskyFeedDescribeFeedGenerator from "./types/app/bsky/feed/describeFeedGenerator.ts"; 129 + import type * as AppBskyFeedSearchPosts from "./types/app/bsky/feed/searchPosts.ts"; 130 + import type * as AppBskyFeedGetPosts from "./types/app/bsky/feed/getPosts.ts"; 131 + import type * as AppBskyFeedGetFeed from "./types/app/bsky/feed/getFeed.ts"; 132 + import type * as AppBskyFeedGetQuotes from "./types/app/bsky/feed/getQuotes.ts"; 133 + import type * as AppBskyFeedGetFeedSkeleton from "./types/app/bsky/feed/getFeedSkeleton.ts"; 134 + import type * as AppBskyFeedGetListFeed from "./types/app/bsky/feed/getListFeed.ts"; 135 + import type * as AppBskyFeedGetSuggestedFeeds from "./types/app/bsky/feed/getSuggestedFeeds.ts"; 136 + import type * as AppBskyFeedGetActorFeeds from "./types/app/bsky/feed/getActorFeeds.ts"; 137 + import type * as AppBskyAgeassuranceBegin from "./types/app/bsky/ageassurance/begin.ts"; 138 + import type * as AppBskyAgeassuranceGetState from "./types/app/bsky/ageassurance/getState.ts"; 139 + import type * as AppBskyAgeassuranceGetConfig from "./types/app/bsky/ageassurance/getConfig.ts"; 140 + import type * as AppBskyActorSearchActorsTypeahead from "./types/app/bsky/actor/searchActorsTypeahead.ts"; 141 + import type * as AppBskyActorPutPreferences from "./types/app/bsky/actor/putPreferences.ts"; 142 + import type * as AppBskyActorGetProfile from "./types/app/bsky/actor/getProfile.ts"; 143 + import type * as AppBskyActorGetSuggestions from "./types/app/bsky/actor/getSuggestions.ts"; 144 + import type * as AppBskyActorSearchActors from "./types/app/bsky/actor/searchActors.ts"; 145 + import type * as AppBskyActorGetProfiles from "./types/app/bsky/actor/getProfiles.ts"; 146 + import type * as AppBskyActorGetPreferences from "./types/app/bsky/actor/getPreferences.ts"; 147 + import type * as AppBskyLabelerGetServices from "./types/app/bsky/labeler/getServices.ts"; 148 + import type * as ChatBskyConvoListConvos from "./types/chat/bsky/convo/listConvos.ts"; 149 + import type * as ChatBskyConvoUnmuteConvo from "./types/chat/bsky/convo/unmuteConvo.ts"; 150 + import type * as ChatBskyConvoGetConvoAvailability from "./types/chat/bsky/convo/getConvoAvailability.ts"; 151 + import type * as ChatBskyConvoGetLog from "./types/chat/bsky/convo/getLog.ts"; 152 + import type * as ChatBskyConvoSendMessage from "./types/chat/bsky/convo/sendMessage.ts"; 153 + import type * as ChatBskyConvoLeaveConvo from "./types/chat/bsky/convo/leaveConvo.ts"; 154 + import type * as ChatBskyConvoAddReaction from "./types/chat/bsky/convo/addReaction.ts"; 155 + import type * as ChatBskyConvoAcceptConvo from "./types/chat/bsky/convo/acceptConvo.ts"; 156 + import type * as ChatBskyConvoMuteConvo from "./types/chat/bsky/convo/muteConvo.ts"; 157 + import type * as ChatBskyConvoDeleteMessageForSelf from "./types/chat/bsky/convo/deleteMessageForSelf.ts"; 158 + import type * as ChatBskyConvoRemoveReaction from "./types/chat/bsky/convo/removeReaction.ts"; 159 + import type * as ChatBskyConvoUpdateRead from "./types/chat/bsky/convo/updateRead.ts"; 160 + import type * as ChatBskyConvoUpdateAllRead from "./types/chat/bsky/convo/updateAllRead.ts"; 161 + import type * as ChatBskyConvoGetConvo from "./types/chat/bsky/convo/getConvo.ts"; 162 + import type * as ChatBskyConvoGetMessages from "./types/chat/bsky/convo/getMessages.ts"; 163 + import type * as ChatBskyConvoGetConvoForMembers from "./types/chat/bsky/convo/getConvoForMembers.ts"; 164 + import type * as ChatBskyConvoSendMessageBatch from "./types/chat/bsky/convo/sendMessageBatch.ts"; 165 + import type * as ChatBskyActorExportAccountData from "./types/chat/bsky/actor/exportAccountData.ts"; 166 + import type * as ChatBskyActorDeleteAccount from "./types/chat/bsky/actor/deleteAccount.ts"; 167 + import type * as ChatBskyModerationGetActorMetadata from "./types/chat/bsky/moderation/getActorMetadata.ts"; 168 + import type * as ChatBskyModerationGetMessageContext from "./types/chat/bsky/moderation/getMessageContext.ts"; 169 + import type * as ChatBskyModerationUpdateActorAccess from "./types/chat/bsky/moderation/updateActorAccess.ts"; 170 + import type * as SoSprkVideoUploadVideo from "./types/so/sprk/video/uploadVideo.ts"; 171 + import type * as SoSprkVideoGetJobStatus from "./types/so/sprk/video/getJobStatus.ts"; 172 + import type * as SoSprkVideoGetUploadLimits from "./types/so/sprk/video/getUploadLimits.ts"; 173 + import type * as SoSprkNotificationRegisterPush from "./types/so/sprk/notification/registerPush.ts"; 174 + import type * as SoSprkNotificationPutPreferences from "./types/so/sprk/notification/putPreferences.ts"; 175 + import type * as SoSprkNotificationUpdateSeen from "./types/so/sprk/notification/updateSeen.ts"; 176 + import type * as SoSprkNotificationListNotifications from "./types/so/sprk/notification/listNotifications.ts"; 177 + import type * as SoSprkNotificationGetUnreadCount from "./types/so/sprk/notification/getUnreadCount.ts"; 178 + import type * as SoSprkGraphGetSuggestedFollowsByActor from "./types/so/sprk/graph/getSuggestedFollowsByActor.ts"; 179 + import type * as SoSprkGraphMuteThread from "./types/so/sprk/graph/muteThread.ts"; 180 + import type * as SoSprkGraphGetFollowers from "./types/so/sprk/graph/getFollowers.ts"; 181 + import type * as SoSprkGraphUnmuteThread from "./types/so/sprk/graph/unmuteThread.ts"; 182 + import type * as SoSprkGraphMuteActor from "./types/so/sprk/graph/muteActor.ts"; 183 + import type * as SoSprkGraphGetMutes from "./types/so/sprk/graph/getMutes.ts"; 184 + import type * as SoSprkGraphGetKnownFollowers from "./types/so/sprk/graph/getKnownFollowers.ts"; 185 + import type * as SoSprkGraphGetFollows from "./types/so/sprk/graph/getFollows.ts"; 186 + import type * as SoSprkGraphGetBlocks from "./types/so/sprk/graph/getBlocks.ts"; 187 + import type * as SoSprkGraphGetRelationships from "./types/so/sprk/graph/getRelationships.ts"; 188 + import type * as SoSprkGraphUnmuteActor from "./types/so/sprk/graph/unmuteActor.ts"; 189 + import type * as SoSprkFeedSendInteractions from "./types/so/sprk/feed/sendInteractions.ts"; 190 + import type * as SoSprkFeedGetFeedGenerators from "./types/so/sprk/feed/getFeedGenerators.ts"; 191 + import type * as SoSprkFeedGetTimeline from "./types/so/sprk/feed/getTimeline.ts"; 192 + import type * as SoSprkFeedGetFeedGenerator from "./types/so/sprk/feed/getFeedGenerator.ts"; 193 + import type * as SoSprkFeedGetAuthorFeed from "./types/so/sprk/feed/getAuthorFeed.ts"; 194 + import type * as SoSprkFeedGetLikes from "./types/so/sprk/feed/getLikes.ts"; 195 + import type * as SoSprkFeedGetPostThread from "./types/so/sprk/feed/getPostThread.ts"; 196 + import type * as SoSprkFeedGetActorLikes from "./types/so/sprk/feed/getActorLikes.ts"; 197 + import type * as SoSprkFeedGetRepostedBy from "./types/so/sprk/feed/getRepostedBy.ts"; 198 + import type * as SoSprkFeedDescribeFeedGenerator from "./types/so/sprk/feed/describeFeedGenerator.ts"; 199 + import type * as SoSprkFeedSearchPosts from "./types/so/sprk/feed/searchPosts.ts"; 200 + import type * as SoSprkFeedGetPosts from "./types/so/sprk/feed/getPosts.ts"; 201 + import type * as SoSprkFeedGetFeed from "./types/so/sprk/feed/getFeed.ts"; 202 + import type * as SoSprkFeedGetFeedSkeleton from "./types/so/sprk/feed/getFeedSkeleton.ts"; 203 + import type * as SoSprkFeedGetSuggestedFeeds from "./types/so/sprk/feed/getSuggestedFeeds.ts"; 204 + import type * as SoSprkFeedGetActorFeeds from "./types/so/sprk/feed/getActorFeeds.ts"; 205 + import type * as SoSprkSoundGetActorAudios from "./types/so/sprk/sound/getActorAudios.ts"; 206 + import type * as SoSprkSoundGetAudioPosts from "./types/so/sprk/sound/getAudioPosts.ts"; 207 + import type * as SoSprkSoundGetAudios from "./types/so/sprk/sound/getAudios.ts"; 208 + import type * as SoSprkSoundGetTrendingAudios from "./types/so/sprk/sound/getTrendingAudios.ts"; 209 + import type * as SoSprkActorSearchActorsTypeahead from "./types/so/sprk/actor/searchActorsTypeahead.ts"; 210 + import type * as SoSprkActorPutPreferences from "./types/so/sprk/actor/putPreferences.ts"; 211 + import type * as SoSprkActorGetProfile from "./types/so/sprk/actor/getProfile.ts"; 212 + import type * as SoSprkActorGetSuggestions from "./types/so/sprk/actor/getSuggestions.ts"; 213 + import type * as SoSprkActorSearchActors from "./types/so/sprk/actor/searchActors.ts"; 214 + import type * as SoSprkActorGetProfiles from "./types/so/sprk/actor/getProfiles.ts"; 215 + import type * as SoSprkActorGetPreferences from "./types/so/sprk/actor/getPreferences.ts"; 216 + import type * as SoSprkStoryGetTimeline from "./types/so/sprk/story/getTimeline.ts"; 217 + import type * as SoSprkStoryGetStories from "./types/so/sprk/story/getStories.ts"; 218 + import type * as SoSprkLabelerGetServices from "./types/so/sprk/labeler/getServices.ts"; 219 + import type * as ComAtprotoTempDereferenceScope from "./types/com/atproto/temp/dereferenceScope.ts"; 220 + import type * as ComAtprotoTempAddReservedHandle from "./types/com/atproto/temp/addReservedHandle.ts"; 221 + import type * as ComAtprotoTempCheckSignupQueue from "./types/com/atproto/temp/checkSignupQueue.ts"; 222 + import type * as ComAtprotoTempCheckHandleAvailability from "./types/com/atproto/temp/checkHandleAvailability.ts"; 223 + import type * as ComAtprotoTempRequestPhoneVerification from "./types/com/atproto/temp/requestPhoneVerification.ts"; 224 + import type * as ComAtprotoTempRevokeAccountCredentials from "./types/com/atproto/temp/revokeAccountCredentials.ts"; 225 + import type * as ComAtprotoTempFetchLabels from "./types/com/atproto/temp/fetchLabels.ts"; 226 + import type * as ComAtprotoIdentityUpdateHandle from "./types/com/atproto/identity/updateHandle.ts"; 227 + import type * as ComAtprotoIdentitySignPlcOperation from "./types/com/atproto/identity/signPlcOperation.ts"; 228 + import type * as ComAtprotoIdentitySubmitPlcOperation from "./types/com/atproto/identity/submitPlcOperation.ts"; 229 + import type * as ComAtprotoIdentityResolveIdentity from "./types/com/atproto/identity/resolveIdentity.ts"; 230 + import type * as ComAtprotoIdentityRefreshIdentity from "./types/com/atproto/identity/refreshIdentity.ts"; 231 + import type * as ComAtprotoIdentityResolveHandle from "./types/com/atproto/identity/resolveHandle.ts"; 232 + import type * as ComAtprotoIdentityRequestPlcOperationSignature from "./types/com/atproto/identity/requestPlcOperationSignature.ts"; 233 + import type * as ComAtprotoIdentityGetRecommendedDidCredentials from "./types/com/atproto/identity/getRecommendedDidCredentials.ts"; 234 + import type * as ComAtprotoIdentityResolveDid from "./types/com/atproto/identity/resolveDid.ts"; 235 + import type * as ComAtprotoAdminUpdateAccountEmail from "./types/com/atproto/admin/updateAccountEmail.ts"; 236 + import type * as ComAtprotoAdminGetAccountInfo from "./types/com/atproto/admin/getAccountInfo.ts"; 237 + import type * as ComAtprotoAdminGetSubjectStatus from "./types/com/atproto/admin/getSubjectStatus.ts"; 238 + import type * as ComAtprotoAdminSearchAccounts from "./types/com/atproto/admin/searchAccounts.ts"; 239 + import type * as ComAtprotoAdminUpdateAccountPassword from "./types/com/atproto/admin/updateAccountPassword.ts"; 240 + import type * as ComAtprotoAdminUpdateAccountHandle from "./types/com/atproto/admin/updateAccountHandle.ts"; 241 + import type * as ComAtprotoAdminGetInviteCodes from "./types/com/atproto/admin/getInviteCodes.ts"; 242 + import type * as ComAtprotoAdminUpdateAccountSigningKey from "./types/com/atproto/admin/updateAccountSigningKey.ts"; 243 + import type * as ComAtprotoAdminEnableAccountInvites from "./types/com/atproto/admin/enableAccountInvites.ts"; 244 + import type * as ComAtprotoAdminDisableAccountInvites from "./types/com/atproto/admin/disableAccountInvites.ts"; 245 + import type * as ComAtprotoAdminDisableInviteCodes from "./types/com/atproto/admin/disableInviteCodes.ts"; 246 + import type * as ComAtprotoAdminUpdateSubjectStatus from "./types/com/atproto/admin/updateSubjectStatus.ts"; 247 + import type * as ComAtprotoAdminSendEmail from "./types/com/atproto/admin/sendEmail.ts"; 248 + import type * as ComAtprotoAdminGetAccountInfos from "./types/com/atproto/admin/getAccountInfos.ts"; 249 + import type * as ComAtprotoAdminDeleteAccount from "./types/com/atproto/admin/deleteAccount.ts"; 250 + import type * as ComAtprotoLabelSubscribeLabels from "./types/com/atproto/label/subscribeLabels.ts"; 251 + import type * as ComAtprotoLabelQueryLabels from "./types/com/atproto/label/queryLabels.ts"; 252 + import type * as ComAtprotoServerRequestEmailConfirmation from "./types/com/atproto/server/requestEmailConfirmation.ts"; 253 + import type * as ComAtprotoServerReserveSigningKey from "./types/com/atproto/server/reserveSigningKey.ts"; 254 + import type * as ComAtprotoServerGetServiceAuth from "./types/com/atproto/server/getServiceAuth.ts"; 255 + import type * as ComAtprotoServerGetAccountInviteCodes from "./types/com/atproto/server/getAccountInviteCodes.ts"; 256 + import type * as ComAtprotoServerCreateSession from "./types/com/atproto/server/createSession.ts"; 257 + import type * as ComAtprotoServerListAppPasswords from "./types/com/atproto/server/listAppPasswords.ts"; 258 + import type * as ComAtprotoServerCreateInviteCodes from "./types/com/atproto/server/createInviteCodes.ts"; 259 + import type * as ComAtprotoServerDeleteSession from "./types/com/atproto/server/deleteSession.ts"; 260 + import type * as ComAtprotoServerRevokeAppPassword from "./types/com/atproto/server/revokeAppPassword.ts"; 261 + import type * as ComAtprotoServerCreateAppPassword from "./types/com/atproto/server/createAppPassword.ts"; 262 + import type * as ComAtprotoServerActivateAccount from "./types/com/atproto/server/activateAccount.ts"; 263 + import type * as ComAtprotoServerDescribeServer from "./types/com/atproto/server/describeServer.ts"; 264 + import type * as ComAtprotoServerConfirmEmail from "./types/com/atproto/server/confirmEmail.ts"; 265 + import type * as ComAtprotoServerGetSession from "./types/com/atproto/server/getSession.ts"; 266 + import type * as ComAtprotoServerRefreshSession from "./types/com/atproto/server/refreshSession.ts"; 267 + import type * as ComAtprotoServerDeactivateAccount from "./types/com/atproto/server/deactivateAccount.ts"; 268 + import type * as ComAtprotoServerUpdateEmail from "./types/com/atproto/server/updateEmail.ts"; 269 + import type * as ComAtprotoServerResetPassword from "./types/com/atproto/server/resetPassword.ts"; 270 + import type * as ComAtprotoServerCheckAccountStatus from "./types/com/atproto/server/checkAccountStatus.ts"; 271 + import type * as ComAtprotoServerRequestEmailUpdate from "./types/com/atproto/server/requestEmailUpdate.ts"; 272 + import type * as ComAtprotoServerRequestPasswordReset from "./types/com/atproto/server/requestPasswordReset.ts"; 273 + import type * as ComAtprotoServerRequestAccountDelete from "./types/com/atproto/server/requestAccountDelete.ts"; 274 + import type * as ComAtprotoServerCreateAccount from "./types/com/atproto/server/createAccount.ts"; 275 + import type * as ComAtprotoServerDeleteAccount from "./types/com/atproto/server/deleteAccount.ts"; 276 + import type * as ComAtprotoServerCreateInviteCode from "./types/com/atproto/server/createInviteCode.ts"; 277 + import type * as ComAtprotoLexiconResolveLexicon from "./types/com/atproto/lexicon/resolveLexicon.ts"; 278 + import type * as ComAtprotoSyncGetHead from "./types/com/atproto/sync/getHead.ts"; 279 + import type * as ComAtprotoSyncGetBlob from "./types/com/atproto/sync/getBlob.ts"; 280 + import type * as ComAtprotoSyncGetRepo from "./types/com/atproto/sync/getRepo.ts"; 281 + import type * as ComAtprotoSyncNotifyOfUpdate from "./types/com/atproto/sync/notifyOfUpdate.ts"; 282 + import type * as ComAtprotoSyncRequestCrawl from "./types/com/atproto/sync/requestCrawl.ts"; 283 + import type * as ComAtprotoSyncListBlobs from "./types/com/atproto/sync/listBlobs.ts"; 284 + import type * as ComAtprotoSyncGetLatestCommit from "./types/com/atproto/sync/getLatestCommit.ts"; 285 + import type * as ComAtprotoSyncSubscribeRepos from "./types/com/atproto/sync/subscribeRepos.ts"; 286 + import type * as ComAtprotoSyncGetRepoStatus from "./types/com/atproto/sync/getRepoStatus.ts"; 287 + import type * as ComAtprotoSyncGetRecord from "./types/com/atproto/sync/getRecord.ts"; 288 + import type * as ComAtprotoSyncListHosts from "./types/com/atproto/sync/listHosts.ts"; 289 + import type * as ComAtprotoSyncListRepos from "./types/com/atproto/sync/listRepos.ts"; 290 + import type * as ComAtprotoSyncGetHostStatus from "./types/com/atproto/sync/getHostStatus.ts"; 291 + import type * as ComAtprotoSyncGetBlocks from "./types/com/atproto/sync/getBlocks.ts"; 292 + import type * as ComAtprotoSyncListReposByCollection from "./types/com/atproto/sync/listReposByCollection.ts"; 293 + import type * as ComAtprotoSyncGetCheckout from "./types/com/atproto/sync/getCheckout.ts"; 294 + import type * as ComAtprotoRepoListMissingBlobs from "./types/com/atproto/repo/listMissingBlobs.ts"; 295 + import type * as ComAtprotoRepoCreateRecord from "./types/com/atproto/repo/createRecord.ts"; 296 + import type * as ComAtprotoRepoDeleteRecord from "./types/com/atproto/repo/deleteRecord.ts"; 297 + import type * as ComAtprotoRepoPutRecord from "./types/com/atproto/repo/putRecord.ts"; 298 + import type * as ComAtprotoRepoUploadBlob from "./types/com/atproto/repo/uploadBlob.ts"; 299 + import type * as ComAtprotoRepoImportRepo from "./types/com/atproto/repo/importRepo.ts"; 300 + import type * as ComAtprotoRepoDescribeRepo from "./types/com/atproto/repo/describeRepo.ts"; 301 + import type * as ComAtprotoRepoGetRecord from "./types/com/atproto/repo/getRecord.ts"; 302 + import type * as ComAtprotoRepoApplyWrites from "./types/com/atproto/repo/applyWrites.ts"; 303 + import type * as ComAtprotoRepoListRecords from "./types/com/atproto/repo/listRecords.ts"; 304 + import type * as ComAtprotoModerationCreateReport from "./types/com/atproto/moderation/createReport.ts"; 252 305 253 306 export const TOOLS_OZONE_TEAM = { 254 307 DefsRoleAdmin: "tools.ozone.team.defs#roleAdmin", 255 308 DefsRoleModerator: "tools.ozone.team.defs#roleModerator", 256 309 DefsRoleTriage: "tools.ozone.team.defs#roleTriage", 310 + DefsRoleVerifier: "tools.ozone.team.defs#roleVerifier", 311 + }; 312 + export const TOOLS_OZONE_REPORT = { 313 + DefsReasonAppeal: "tools.ozone.report.defs#reasonAppeal", 314 + DefsReasonOther: "tools.ozone.report.defs#reasonOther", 315 + DefsReasonViolenceAnimal: "tools.ozone.report.defs#reasonViolenceAnimal", 316 + DefsReasonViolenceThreats: "tools.ozone.report.defs#reasonViolenceThreats", 317 + DefsReasonViolenceGraphicContent: 318 + "tools.ozone.report.defs#reasonViolenceGraphicContent", 319 + DefsReasonViolenceGlorification: 320 + "tools.ozone.report.defs#reasonViolenceGlorification", 321 + DefsReasonViolenceExtremistContent: 322 + "tools.ozone.report.defs#reasonViolenceExtremistContent", 323 + DefsReasonViolenceTrafficking: 324 + "tools.ozone.report.defs#reasonViolenceTrafficking", 325 + DefsReasonViolenceOther: "tools.ozone.report.defs#reasonViolenceOther", 326 + DefsReasonSexualAbuseContent: 327 + "tools.ozone.report.defs#reasonSexualAbuseContent", 328 + DefsReasonSexualNCII: "tools.ozone.report.defs#reasonSexualNCII", 329 + DefsReasonSexualDeepfake: "tools.ozone.report.defs#reasonSexualDeepfake", 330 + DefsReasonSexualAnimal: "tools.ozone.report.defs#reasonSexualAnimal", 331 + DefsReasonSexualUnlabeled: "tools.ozone.report.defs#reasonSexualUnlabeled", 332 + DefsReasonSexualOther: "tools.ozone.report.defs#reasonSexualOther", 333 + DefsReasonChildSafetyCSAM: "tools.ozone.report.defs#reasonChildSafetyCSAM", 334 + DefsReasonChildSafetyGroom: "tools.ozone.report.defs#reasonChildSafetyGroom", 335 + DefsReasonChildSafetyPrivacy: 336 + "tools.ozone.report.defs#reasonChildSafetyPrivacy", 337 + DefsReasonChildSafetyHarassment: 338 + "tools.ozone.report.defs#reasonChildSafetyHarassment", 339 + DefsReasonChildSafetyOther: "tools.ozone.report.defs#reasonChildSafetyOther", 340 + DefsReasonHarassmentTroll: "tools.ozone.report.defs#reasonHarassmentTroll", 341 + DefsReasonHarassmentTargeted: 342 + "tools.ozone.report.defs#reasonHarassmentTargeted", 343 + DefsReasonHarassmentHateSpeech: 344 + "tools.ozone.report.defs#reasonHarassmentHateSpeech", 345 + DefsReasonHarassmentDoxxing: 346 + "tools.ozone.report.defs#reasonHarassmentDoxxing", 347 + DefsReasonHarassmentOther: "tools.ozone.report.defs#reasonHarassmentOther", 348 + DefsReasonMisleadingBot: "tools.ozone.report.defs#reasonMisleadingBot", 349 + DefsReasonMisleadingImpersonation: 350 + "tools.ozone.report.defs#reasonMisleadingImpersonation", 351 + DefsReasonMisleadingSpam: "tools.ozone.report.defs#reasonMisleadingSpam", 352 + DefsReasonMisleadingScam: "tools.ozone.report.defs#reasonMisleadingScam", 353 + DefsReasonMisleadingElections: 354 + "tools.ozone.report.defs#reasonMisleadingElections", 355 + DefsReasonMisleadingOther: "tools.ozone.report.defs#reasonMisleadingOther", 356 + DefsReasonRuleSiteSecurity: "tools.ozone.report.defs#reasonRuleSiteSecurity", 357 + DefsReasonRuleProhibitedSales: 358 + "tools.ozone.report.defs#reasonRuleProhibitedSales", 359 + DefsReasonRuleBanEvasion: "tools.ozone.report.defs#reasonRuleBanEvasion", 360 + DefsReasonRuleOther: "tools.ozone.report.defs#reasonRuleOther", 361 + DefsReasonSelfHarmContent: "tools.ozone.report.defs#reasonSelfHarmContent", 362 + DefsReasonSelfHarmED: "tools.ozone.report.defs#reasonSelfHarmED", 363 + DefsReasonSelfHarmStunts: "tools.ozone.report.defs#reasonSelfHarmStunts", 364 + DefsReasonSelfHarmSubstances: 365 + "tools.ozone.report.defs#reasonSelfHarmSubstances", 366 + DefsReasonSelfHarmOther: "tools.ozone.report.defs#reasonSelfHarmOther", 257 367 }; 258 368 export const TOOLS_OZONE_MODERATION = { 259 369 DefsReviewOpen: "tools.ozone.moderation.defs#reviewOpen", 260 370 DefsReviewEscalated: "tools.ozone.moderation.defs#reviewEscalated", 261 371 DefsReviewClosed: "tools.ozone.moderation.defs#reviewClosed", 262 372 DefsReviewNone: "tools.ozone.moderation.defs#reviewNone", 373 + DefsTimelineEventPlcCreate: 374 + "tools.ozone.moderation.defs#timelineEventPlcCreate", 375 + DefsTimelineEventPlcOperation: 376 + "tools.ozone.moderation.defs#timelineEventPlcOperation", 377 + DefsTimelineEventPlcTombstone: 378 + "tools.ozone.moderation.defs#timelineEventPlcTombstone", 263 379 }; 264 380 export const APP_BSKY_GRAPH = { 265 381 DefsModlist: "app.bsky.graph.defs#modlist", ··· 281 397 DefsInteractionReply: "app.bsky.feed.defs#interactionReply", 282 398 DefsInteractionQuote: "app.bsky.feed.defs#interactionQuote", 283 399 DefsInteractionShare: "app.bsky.feed.defs#interactionShare", 400 + }; 401 + export const APP_BSKY_ACTOR = { 402 + StatusLive: "app.bsky.actor.status#live", 284 403 }; 285 404 export const SO_SPRK_FEED = { 286 405 DefsRequestLess: "so.sprk.feed.defs#requestLess", ··· 341 460 _server: Server; 342 461 signature: ToolsOzoneSignatureNS; 343 462 server: ToolsOzoneServerNS; 463 + verification: ToolsOzoneVerificationNS; 464 + safelink: ToolsOzoneSafelinkNS; 344 465 team: ToolsOzoneTeamNS; 466 + hosting: ToolsOzoneHostingNS; 345 467 communication: ToolsOzoneCommunicationNS; 346 468 set: ToolsOzoneSetNS; 347 469 setting: ToolsOzoneSettingNS; ··· 351 473 this._server = server; 352 474 this.signature = new ToolsOzoneSignatureNS(server); 353 475 this.server = new ToolsOzoneServerNS(server); 476 + this.verification = new ToolsOzoneVerificationNS(server); 477 + this.safelink = new ToolsOzoneSafelinkNS(server); 354 478 this.team = new ToolsOzoneTeamNS(server); 479 + this.hosting = new ToolsOzoneHostingNS(server); 355 480 this.communication = new ToolsOzoneCommunicationNS(server); 356 481 this.set = new ToolsOzoneSetNS(server); 357 482 this.setting = new ToolsOzoneSettingNS(server); ··· 423 548 } 424 549 } 425 550 551 + export class ToolsOzoneVerificationNS { 552 + _server: Server; 553 + 554 + constructor(server: Server) { 555 + this._server = server; 556 + } 557 + 558 + revokeVerifications<A extends Auth = void>( 559 + cfg: MethodConfigOrHandler< 560 + A, 561 + ToolsOzoneVerificationRevokeVerifications.QueryParams, 562 + ToolsOzoneVerificationRevokeVerifications.HandlerInput, 563 + ToolsOzoneVerificationRevokeVerifications.HandlerOutput 564 + >, 565 + ) { 566 + const nsid = "tools.ozone.verification.revokeVerifications"; // @ts-ignore - dynamically generated 567 + return this._server.xrpc.method(nsid, cfg); 568 + } 569 + 570 + grantVerifications<A extends Auth = void>( 571 + cfg: MethodConfigOrHandler< 572 + A, 573 + ToolsOzoneVerificationGrantVerifications.QueryParams, 574 + ToolsOzoneVerificationGrantVerifications.HandlerInput, 575 + ToolsOzoneVerificationGrantVerifications.HandlerOutput 576 + >, 577 + ) { 578 + const nsid = "tools.ozone.verification.grantVerifications"; // @ts-ignore - dynamically generated 579 + return this._server.xrpc.method(nsid, cfg); 580 + } 581 + 582 + listVerifications<A extends Auth = void>( 583 + cfg: MethodConfigOrHandler< 584 + A, 585 + ToolsOzoneVerificationListVerifications.QueryParams, 586 + ToolsOzoneVerificationListVerifications.HandlerInput, 587 + ToolsOzoneVerificationListVerifications.HandlerOutput 588 + >, 589 + ) { 590 + const nsid = "tools.ozone.verification.listVerifications"; // @ts-ignore - dynamically generated 591 + return this._server.xrpc.method(nsid, cfg); 592 + } 593 + } 594 + 595 + export class ToolsOzoneSafelinkNS { 596 + _server: Server; 597 + 598 + constructor(server: Server) { 599 + this._server = server; 600 + } 601 + 602 + addRule<A extends Auth = void>( 603 + cfg: MethodConfigOrHandler< 604 + A, 605 + ToolsOzoneSafelinkAddRule.QueryParams, 606 + ToolsOzoneSafelinkAddRule.HandlerInput, 607 + ToolsOzoneSafelinkAddRule.HandlerOutput 608 + >, 609 + ) { 610 + const nsid = "tools.ozone.safelink.addRule"; // @ts-ignore - dynamically generated 611 + return this._server.xrpc.method(nsid, cfg); 612 + } 613 + 614 + removeRule<A extends Auth = void>( 615 + cfg: MethodConfigOrHandler< 616 + A, 617 + ToolsOzoneSafelinkRemoveRule.QueryParams, 618 + ToolsOzoneSafelinkRemoveRule.HandlerInput, 619 + ToolsOzoneSafelinkRemoveRule.HandlerOutput 620 + >, 621 + ) { 622 + const nsid = "tools.ozone.safelink.removeRule"; // @ts-ignore - dynamically generated 623 + return this._server.xrpc.method(nsid, cfg); 624 + } 625 + 626 + updateRule<A extends Auth = void>( 627 + cfg: MethodConfigOrHandler< 628 + A, 629 + ToolsOzoneSafelinkUpdateRule.QueryParams, 630 + ToolsOzoneSafelinkUpdateRule.HandlerInput, 631 + ToolsOzoneSafelinkUpdateRule.HandlerOutput 632 + >, 633 + ) { 634 + const nsid = "tools.ozone.safelink.updateRule"; // @ts-ignore - dynamically generated 635 + return this._server.xrpc.method(nsid, cfg); 636 + } 637 + 638 + queryEvents<A extends Auth = void>( 639 + cfg: MethodConfigOrHandler< 640 + A, 641 + ToolsOzoneSafelinkQueryEvents.QueryParams, 642 + ToolsOzoneSafelinkQueryEvents.HandlerInput, 643 + ToolsOzoneSafelinkQueryEvents.HandlerOutput 644 + >, 645 + ) { 646 + const nsid = "tools.ozone.safelink.queryEvents"; // @ts-ignore - dynamically generated 647 + return this._server.xrpc.method(nsid, cfg); 648 + } 649 + 650 + queryRules<A extends Auth = void>( 651 + cfg: MethodConfigOrHandler< 652 + A, 653 + ToolsOzoneSafelinkQueryRules.QueryParams, 654 + ToolsOzoneSafelinkQueryRules.HandlerInput, 655 + ToolsOzoneSafelinkQueryRules.HandlerOutput 656 + >, 657 + ) { 658 + const nsid = "tools.ozone.safelink.queryRules"; // @ts-ignore - dynamically generated 659 + return this._server.xrpc.method(nsid, cfg); 660 + } 661 + } 662 + 426 663 export class ToolsOzoneTeamNS { 427 664 _server: Server; 428 665 ··· 479 716 } 480 717 } 481 718 719 + export class ToolsOzoneHostingNS { 720 + _server: Server; 721 + 722 + constructor(server: Server) { 723 + this._server = server; 724 + } 725 + 726 + getAccountHistory<A extends Auth = void>( 727 + cfg: MethodConfigOrHandler< 728 + A, 729 + ToolsOzoneHostingGetAccountHistory.QueryParams, 730 + ToolsOzoneHostingGetAccountHistory.HandlerInput, 731 + ToolsOzoneHostingGetAccountHistory.HandlerOutput 732 + >, 733 + ) { 734 + const nsid = "tools.ozone.hosting.getAccountHistory"; // @ts-ignore - dynamically generated 735 + return this._server.xrpc.method(nsid, cfg); 736 + } 737 + } 738 + 482 739 export class ToolsOzoneCommunicationNS { 483 740 _server: Server; 484 741 ··· 678 935 return this._server.xrpc.method(nsid, cfg); 679 936 } 680 937 938 + cancelScheduledActions<A extends Auth = void>( 939 + cfg: MethodConfigOrHandler< 940 + A, 941 + ToolsOzoneModerationCancelScheduledActions.QueryParams, 942 + ToolsOzoneModerationCancelScheduledActions.HandlerInput, 943 + ToolsOzoneModerationCancelScheduledActions.HandlerOutput 944 + >, 945 + ) { 946 + const nsid = "tools.ozone.moderation.cancelScheduledActions"; // @ts-ignore - dynamically generated 947 + return this._server.xrpc.method(nsid, cfg); 948 + } 949 + 950 + listScheduledActions<A extends Auth = void>( 951 + cfg: MethodConfigOrHandler< 952 + A, 953 + ToolsOzoneModerationListScheduledActions.QueryParams, 954 + ToolsOzoneModerationListScheduledActions.HandlerInput, 955 + ToolsOzoneModerationListScheduledActions.HandlerOutput 956 + >, 957 + ) { 958 + const nsid = "tools.ozone.moderation.listScheduledActions"; // @ts-ignore - dynamically generated 959 + return this._server.xrpc.method(nsid, cfg); 960 + } 961 + 681 962 queryStatuses<A extends Auth = void>( 682 963 cfg: MethodConfigOrHandler< 683 964 A, ··· 702 983 return this._server.xrpc.method(nsid, cfg); 703 984 } 704 985 986 + getSubjects<A extends Auth = void>( 987 + cfg: MethodConfigOrHandler< 988 + A, 989 + ToolsOzoneModerationGetSubjects.QueryParams, 990 + ToolsOzoneModerationGetSubjects.HandlerInput, 991 + ToolsOzoneModerationGetSubjects.HandlerOutput 992 + >, 993 + ) { 994 + const nsid = "tools.ozone.moderation.getSubjects"; // @ts-ignore - dynamically generated 995 + return this._server.xrpc.method(nsid, cfg); 996 + } 997 + 705 998 getRecords<A extends Auth = void>( 706 999 cfg: MethodConfigOrHandler< 707 1000 A, ··· 714 1007 return this._server.xrpc.method(nsid, cfg); 715 1008 } 716 1009 1010 + scheduleAction<A extends Auth = void>( 1011 + cfg: MethodConfigOrHandler< 1012 + A, 1013 + ToolsOzoneModerationScheduleAction.QueryParams, 1014 + ToolsOzoneModerationScheduleAction.HandlerInput, 1015 + ToolsOzoneModerationScheduleAction.HandlerOutput 1016 + >, 1017 + ) { 1018 + const nsid = "tools.ozone.moderation.scheduleAction"; // @ts-ignore - dynamically generated 1019 + return this._server.xrpc.method(nsid, cfg); 1020 + } 1021 + 717 1022 getEvent<A extends Auth = void>( 718 1023 cfg: MethodConfigOrHandler< 719 1024 A, ··· 774 1079 return this._server.xrpc.method(nsid, cfg); 775 1080 } 776 1081 1082 + getAccountTimeline<A extends Auth = void>( 1083 + cfg: MethodConfigOrHandler< 1084 + A, 1085 + ToolsOzoneModerationGetAccountTimeline.QueryParams, 1086 + ToolsOzoneModerationGetAccountTimeline.HandlerInput, 1087 + ToolsOzoneModerationGetAccountTimeline.HandlerOutput 1088 + >, 1089 + ) { 1090 + const nsid = "tools.ozone.moderation.getAccountTimeline"; // @ts-ignore - dynamically generated 1091 + return this._server.xrpc.method(nsid, cfg); 1092 + } 1093 + 777 1094 getRepos<A extends Auth = void>( 778 1095 cfg: MethodConfigOrHandler< 779 1096 A, ··· 800 1117 export class AppBskyNS { 801 1118 _server: Server; 802 1119 video: AppBskyVideoNS; 1120 + bookmark: AppBskyBookmarkNS; 803 1121 embed: AppBskyEmbedNS; 804 1122 notification: AppBskyNotificationNS; 805 1123 unspecced: AppBskyUnspeccedNS; 806 1124 graph: AppBskyGraphNS; 807 1125 feed: AppBskyFeedNS; 808 1126 richtext: AppBskyRichtextNS; 1127 + ageassurance: AppBskyAgeassuranceNS; 809 1128 actor: AppBskyActorNS; 810 1129 labeler: AppBskyLabelerNS; 811 1130 812 1131 constructor(server: Server) { 813 1132 this._server = server; 814 1133 this.video = new AppBskyVideoNS(server); 1134 + this.bookmark = new AppBskyBookmarkNS(server); 815 1135 this.embed = new AppBskyEmbedNS(server); 816 1136 this.notification = new AppBskyNotificationNS(server); 817 1137 this.unspecced = new AppBskyUnspeccedNS(server); 818 1138 this.graph = new AppBskyGraphNS(server); 819 1139 this.feed = new AppBskyFeedNS(server); 820 1140 this.richtext = new AppBskyRichtextNS(server); 1141 + this.ageassurance = new AppBskyAgeassuranceNS(server); 821 1142 this.actor = new AppBskyActorNS(server); 822 1143 this.labeler = new AppBskyLabelerNS(server); 823 1144 } ··· 867 1188 } 868 1189 } 869 1190 1191 + export class AppBskyBookmarkNS { 1192 + _server: Server; 1193 + 1194 + constructor(server: Server) { 1195 + this._server = server; 1196 + } 1197 + 1198 + deleteBookmark<A extends Auth = void>( 1199 + cfg: MethodConfigOrHandler< 1200 + A, 1201 + AppBskyBookmarkDeleteBookmark.QueryParams, 1202 + AppBskyBookmarkDeleteBookmark.HandlerInput, 1203 + AppBskyBookmarkDeleteBookmark.HandlerOutput 1204 + >, 1205 + ) { 1206 + const nsid = "app.bsky.bookmark.deleteBookmark"; // @ts-ignore - dynamically generated 1207 + return this._server.xrpc.method(nsid, cfg); 1208 + } 1209 + 1210 + getBookmarks<A extends Auth = void>( 1211 + cfg: MethodConfigOrHandler< 1212 + A, 1213 + AppBskyBookmarkGetBookmarks.QueryParams, 1214 + AppBskyBookmarkGetBookmarks.HandlerInput, 1215 + AppBskyBookmarkGetBookmarks.HandlerOutput 1216 + >, 1217 + ) { 1218 + const nsid = "app.bsky.bookmark.getBookmarks"; // @ts-ignore - dynamically generated 1219 + return this._server.xrpc.method(nsid, cfg); 1220 + } 1221 + 1222 + createBookmark<A extends Auth = void>( 1223 + cfg: MethodConfigOrHandler< 1224 + A, 1225 + AppBskyBookmarkCreateBookmark.QueryParams, 1226 + AppBskyBookmarkCreateBookmark.HandlerInput, 1227 + AppBskyBookmarkCreateBookmark.HandlerOutput 1228 + >, 1229 + ) { 1230 + const nsid = "app.bsky.bookmark.createBookmark"; // @ts-ignore - dynamically generated 1231 + return this._server.xrpc.method(nsid, cfg); 1232 + } 1233 + } 1234 + 870 1235 export class AppBskyEmbedNS { 871 1236 _server: Server; 872 1237 ··· 906 1271 return this._server.xrpc.method(nsid, cfg); 907 1272 } 908 1273 1274 + putActivitySubscription<A extends Auth = void>( 1275 + cfg: MethodConfigOrHandler< 1276 + A, 1277 + AppBskyNotificationPutActivitySubscription.QueryParams, 1278 + AppBskyNotificationPutActivitySubscription.HandlerInput, 1279 + AppBskyNotificationPutActivitySubscription.HandlerOutput 1280 + >, 1281 + ) { 1282 + const nsid = "app.bsky.notification.putActivitySubscription"; // @ts-ignore - dynamically generated 1283 + return this._server.xrpc.method(nsid, cfg); 1284 + } 1285 + 1286 + putPreferencesV2<A extends Auth = void>( 1287 + cfg: MethodConfigOrHandler< 1288 + A, 1289 + AppBskyNotificationPutPreferencesV2.QueryParams, 1290 + AppBskyNotificationPutPreferencesV2.HandlerInput, 1291 + AppBskyNotificationPutPreferencesV2.HandlerOutput 1292 + >, 1293 + ) { 1294 + const nsid = "app.bsky.notification.putPreferencesV2"; // @ts-ignore - dynamically generated 1295 + return this._server.xrpc.method(nsid, cfg); 1296 + } 1297 + 909 1298 updateSeen<A extends Auth = void>( 910 1299 cfg: MethodConfigOrHandler< 911 1300 A, ··· 918 1307 return this._server.xrpc.method(nsid, cfg); 919 1308 } 920 1309 1310 + listActivitySubscriptions<A extends Auth = void>( 1311 + cfg: MethodConfigOrHandler< 1312 + A, 1313 + AppBskyNotificationListActivitySubscriptions.QueryParams, 1314 + AppBskyNotificationListActivitySubscriptions.HandlerInput, 1315 + AppBskyNotificationListActivitySubscriptions.HandlerOutput 1316 + >, 1317 + ) { 1318 + const nsid = "app.bsky.notification.listActivitySubscriptions"; // @ts-ignore - dynamically generated 1319 + return this._server.xrpc.method(nsid, cfg); 1320 + } 1321 + 1322 + unregisterPush<A extends Auth = void>( 1323 + cfg: MethodConfigOrHandler< 1324 + A, 1325 + AppBskyNotificationUnregisterPush.QueryParams, 1326 + AppBskyNotificationUnregisterPush.HandlerInput, 1327 + AppBskyNotificationUnregisterPush.HandlerOutput 1328 + >, 1329 + ) { 1330 + const nsid = "app.bsky.notification.unregisterPush"; // @ts-ignore - dynamically generated 1331 + return this._server.xrpc.method(nsid, cfg); 1332 + } 1333 + 1334 + getPreferences<A extends Auth = void>( 1335 + cfg: MethodConfigOrHandler< 1336 + A, 1337 + AppBskyNotificationGetPreferences.QueryParams, 1338 + AppBskyNotificationGetPreferences.HandlerInput, 1339 + AppBskyNotificationGetPreferences.HandlerOutput 1340 + >, 1341 + ) { 1342 + const nsid = "app.bsky.notification.getPreferences"; // @ts-ignore - dynamically generated 1343 + return this._server.xrpc.method(nsid, cfg); 1344 + } 1345 + 921 1346 listNotifications<A extends Auth = void>( 922 1347 cfg: MethodConfigOrHandler< 923 1348 A, ··· 950 1375 this._server = server; 951 1376 } 952 1377 1378 + getSuggestedFeedsSkeleton<A extends Auth = void>( 1379 + cfg: MethodConfigOrHandler< 1380 + A, 1381 + AppBskyUnspeccedGetSuggestedFeedsSkeleton.QueryParams, 1382 + AppBskyUnspeccedGetSuggestedFeedsSkeleton.HandlerInput, 1383 + AppBskyUnspeccedGetSuggestedFeedsSkeleton.HandlerOutput 1384 + >, 1385 + ) { 1386 + const nsid = "app.bsky.unspecced.getSuggestedFeedsSkeleton"; // @ts-ignore - dynamically generated 1387 + return this._server.xrpc.method(nsid, cfg); 1388 + } 1389 + 953 1390 searchStarterPacksSkeleton<A extends Auth = void>( 954 1391 cfg: MethodConfigOrHandler< 955 1392 A, ··· 962 1399 return this._server.xrpc.method(nsid, cfg); 963 1400 } 964 1401 1402 + getOnboardingSuggestedStarterPacksSkeleton<A extends Auth = void>( 1403 + cfg: MethodConfigOrHandler< 1404 + A, 1405 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton.QueryParams, 1406 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton.HandlerInput, 1407 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton.HandlerOutput 1408 + >, 1409 + ) { 1410 + const nsid = 1411 + "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton"; // @ts-ignore - dynamically generated 1412 + return this._server.xrpc.method(nsid, cfg); 1413 + } 1414 + 1415 + getSuggestedUsers<A extends Auth = void>( 1416 + cfg: MethodConfigOrHandler< 1417 + A, 1418 + AppBskyUnspeccedGetSuggestedUsers.QueryParams, 1419 + AppBskyUnspeccedGetSuggestedUsers.HandlerInput, 1420 + AppBskyUnspeccedGetSuggestedUsers.HandlerOutput 1421 + >, 1422 + ) { 1423 + const nsid = "app.bsky.unspecced.getSuggestedUsers"; // @ts-ignore - dynamically generated 1424 + return this._server.xrpc.method(nsid, cfg); 1425 + } 1426 + 1427 + getPostThreadOtherV2<A extends Auth = void>( 1428 + cfg: MethodConfigOrHandler< 1429 + A, 1430 + AppBskyUnspeccedGetPostThreadOtherV2.QueryParams, 1431 + AppBskyUnspeccedGetPostThreadOtherV2.HandlerInput, 1432 + AppBskyUnspeccedGetPostThreadOtherV2.HandlerOutput 1433 + >, 1434 + ) { 1435 + const nsid = "app.bsky.unspecced.getPostThreadOtherV2"; // @ts-ignore - dynamically generated 1436 + return this._server.xrpc.method(nsid, cfg); 1437 + } 1438 + 1439 + getSuggestedStarterPacks<A extends Auth = void>( 1440 + cfg: MethodConfigOrHandler< 1441 + A, 1442 + AppBskyUnspeccedGetSuggestedStarterPacks.QueryParams, 1443 + AppBskyUnspeccedGetSuggestedStarterPacks.HandlerInput, 1444 + AppBskyUnspeccedGetSuggestedStarterPacks.HandlerOutput 1445 + >, 1446 + ) { 1447 + const nsid = "app.bsky.unspecced.getSuggestedStarterPacks"; // @ts-ignore - dynamically generated 1448 + return this._server.xrpc.method(nsid, cfg); 1449 + } 1450 + 1451 + getSuggestedStarterPacksSkeleton<A extends Auth = void>( 1452 + cfg: MethodConfigOrHandler< 1453 + A, 1454 + AppBskyUnspeccedGetSuggestedStarterPacksSkeleton.QueryParams, 1455 + AppBskyUnspeccedGetSuggestedStarterPacksSkeleton.HandlerInput, 1456 + AppBskyUnspeccedGetSuggestedStarterPacksSkeleton.HandlerOutput 1457 + >, 1458 + ) { 1459 + const nsid = "app.bsky.unspecced.getSuggestedStarterPacksSkeleton"; // @ts-ignore - dynamically generated 1460 + return this._server.xrpc.method(nsid, cfg); 1461 + } 1462 + 1463 + getOnboardingSuggestedStarterPacks<A extends Auth = void>( 1464 + cfg: MethodConfigOrHandler< 1465 + A, 1466 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacks.QueryParams, 1467 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacks.HandlerInput, 1468 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacks.HandlerOutput 1469 + >, 1470 + ) { 1471 + const nsid = "app.bsky.unspecced.getOnboardingSuggestedStarterPacks"; // @ts-ignore - dynamically generated 1472 + return this._server.xrpc.method(nsid, cfg); 1473 + } 1474 + 1475 + getSuggestedUsersSkeleton<A extends Auth = void>( 1476 + cfg: MethodConfigOrHandler< 1477 + A, 1478 + AppBskyUnspeccedGetSuggestedUsersSkeleton.QueryParams, 1479 + AppBskyUnspeccedGetSuggestedUsersSkeleton.HandlerInput, 1480 + AppBskyUnspeccedGetSuggestedUsersSkeleton.HandlerOutput 1481 + >, 1482 + ) { 1483 + const nsid = "app.bsky.unspecced.getSuggestedUsersSkeleton"; // @ts-ignore - dynamically generated 1484 + return this._server.xrpc.method(nsid, cfg); 1485 + } 1486 + 1487 + getPostThreadV2<A extends Auth = void>( 1488 + cfg: MethodConfigOrHandler< 1489 + A, 1490 + AppBskyUnspeccedGetPostThreadV2.QueryParams, 1491 + AppBskyUnspeccedGetPostThreadV2.HandlerInput, 1492 + AppBskyUnspeccedGetPostThreadV2.HandlerOutput 1493 + >, 1494 + ) { 1495 + const nsid = "app.bsky.unspecced.getPostThreadV2"; // @ts-ignore - dynamically generated 1496 + return this._server.xrpc.method(nsid, cfg); 1497 + } 1498 + 1499 + getTrends<A extends Auth = void>( 1500 + cfg: MethodConfigOrHandler< 1501 + A, 1502 + AppBskyUnspeccedGetTrends.QueryParams, 1503 + AppBskyUnspeccedGetTrends.HandlerInput, 1504 + AppBskyUnspeccedGetTrends.HandlerOutput 1505 + >, 1506 + ) { 1507 + const nsid = "app.bsky.unspecced.getTrends"; // @ts-ignore - dynamically generated 1508 + return this._server.xrpc.method(nsid, cfg); 1509 + } 1510 + 965 1511 searchActorsSkeleton<A extends Auth = void>( 966 1512 cfg: MethodConfigOrHandler< 967 1513 A, ··· 998 1544 return this._server.xrpc.method(nsid, cfg); 999 1545 } 1000 1546 1547 + getAgeAssuranceState<A extends Auth = void>( 1548 + cfg: MethodConfigOrHandler< 1549 + A, 1550 + AppBskyUnspeccedGetAgeAssuranceState.QueryParams, 1551 + AppBskyUnspeccedGetAgeAssuranceState.HandlerInput, 1552 + AppBskyUnspeccedGetAgeAssuranceState.HandlerOutput 1553 + >, 1554 + ) { 1555 + const nsid = "app.bsky.unspecced.getAgeAssuranceState"; // @ts-ignore - dynamically generated 1556 + return this._server.xrpc.method(nsid, cfg); 1557 + } 1558 + 1001 1559 getPopularFeedGenerators<A extends Auth = void>( 1002 1560 cfg: MethodConfigOrHandler< 1003 1561 A, ··· 1010 1568 return this._server.xrpc.method(nsid, cfg); 1011 1569 } 1012 1570 1571 + initAgeAssurance<A extends Auth = void>( 1572 + cfg: MethodConfigOrHandler< 1573 + A, 1574 + AppBskyUnspeccedInitAgeAssurance.QueryParams, 1575 + AppBskyUnspeccedInitAgeAssurance.HandlerInput, 1576 + AppBskyUnspeccedInitAgeAssurance.HandlerOutput 1577 + >, 1578 + ) { 1579 + const nsid = "app.bsky.unspecced.initAgeAssurance"; // @ts-ignore - dynamically generated 1580 + return this._server.xrpc.method(nsid, cfg); 1581 + } 1582 + 1013 1583 getTrendingTopics<A extends Auth = void>( 1014 1584 cfg: MethodConfigOrHandler< 1015 1585 A, ··· 1034 1604 return this._server.xrpc.method(nsid, cfg); 1035 1605 } 1036 1606 1607 + getSuggestedFeeds<A extends Auth = void>( 1608 + cfg: MethodConfigOrHandler< 1609 + A, 1610 + AppBskyUnspeccedGetSuggestedFeeds.QueryParams, 1611 + AppBskyUnspeccedGetSuggestedFeeds.HandlerInput, 1612 + AppBskyUnspeccedGetSuggestedFeeds.HandlerOutput 1613 + >, 1614 + ) { 1615 + const nsid = "app.bsky.unspecced.getSuggestedFeeds"; // @ts-ignore - dynamically generated 1616 + return this._server.xrpc.method(nsid, cfg); 1617 + } 1618 + 1619 + getTrendsSkeleton<A extends Auth = void>( 1620 + cfg: MethodConfigOrHandler< 1621 + A, 1622 + AppBskyUnspeccedGetTrendsSkeleton.QueryParams, 1623 + AppBskyUnspeccedGetTrendsSkeleton.HandlerInput, 1624 + AppBskyUnspeccedGetTrendsSkeleton.HandlerOutput 1625 + >, 1626 + ) { 1627 + const nsid = "app.bsky.unspecced.getTrendsSkeleton"; // @ts-ignore - dynamically generated 1628 + return this._server.xrpc.method(nsid, cfg); 1629 + } 1630 + 1037 1631 getConfig<A extends Auth = void>( 1038 1632 cfg: MethodConfigOrHandler< 1039 1633 A, ··· 1075 1669 >, 1076 1670 ) { 1077 1671 const nsid = "app.bsky.graph.getSuggestedFollowsByActor"; // @ts-ignore - dynamically generated 1672 + return this._server.xrpc.method(nsid, cfg); 1673 + } 1674 + 1675 + getStarterPacksWithMembership<A extends Auth = void>( 1676 + cfg: MethodConfigOrHandler< 1677 + A, 1678 + AppBskyGraphGetStarterPacksWithMembership.QueryParams, 1679 + AppBskyGraphGetStarterPacksWithMembership.HandlerInput, 1680 + AppBskyGraphGetStarterPacksWithMembership.HandlerOutput 1681 + >, 1682 + ) { 1683 + const nsid = "app.bsky.graph.getStarterPacksWithMembership"; // @ts-ignore - dynamically generated 1684 + return this._server.xrpc.method(nsid, cfg); 1685 + } 1686 + 1687 + getListsWithMembership<A extends Auth = void>( 1688 + cfg: MethodConfigOrHandler< 1689 + A, 1690 + AppBskyGraphGetListsWithMembership.QueryParams, 1691 + AppBskyGraphGetListsWithMembership.HandlerInput, 1692 + AppBskyGraphGetListsWithMembership.HandlerOutput 1693 + >, 1694 + ) { 1695 + const nsid = "app.bsky.graph.getListsWithMembership"; // @ts-ignore - dynamically generated 1078 1696 return this._server.xrpc.method(nsid, cfg); 1079 1697 } 1080 1698 ··· 1539 2157 } 1540 2158 } 1541 2159 2160 + export class AppBskyAgeassuranceNS { 2161 + _server: Server; 2162 + 2163 + constructor(server: Server) { 2164 + this._server = server; 2165 + } 2166 + 2167 + begin<A extends Auth = void>( 2168 + cfg: MethodConfigOrHandler< 2169 + A, 2170 + AppBskyAgeassuranceBegin.QueryParams, 2171 + AppBskyAgeassuranceBegin.HandlerInput, 2172 + AppBskyAgeassuranceBegin.HandlerOutput 2173 + >, 2174 + ) { 2175 + const nsid = "app.bsky.ageassurance.begin"; // @ts-ignore - dynamically generated 2176 + return this._server.xrpc.method(nsid, cfg); 2177 + } 2178 + 2179 + getState<A extends Auth = void>( 2180 + cfg: MethodConfigOrHandler< 2181 + A, 2182 + AppBskyAgeassuranceGetState.QueryParams, 2183 + AppBskyAgeassuranceGetState.HandlerInput, 2184 + AppBskyAgeassuranceGetState.HandlerOutput 2185 + >, 2186 + ) { 2187 + const nsid = "app.bsky.ageassurance.getState"; // @ts-ignore - dynamically generated 2188 + return this._server.xrpc.method(nsid, cfg); 2189 + } 2190 + 2191 + getConfig<A extends Auth = void>( 2192 + cfg: MethodConfigOrHandler< 2193 + A, 2194 + AppBskyAgeassuranceGetConfig.QueryParams, 2195 + AppBskyAgeassuranceGetConfig.HandlerInput, 2196 + AppBskyAgeassuranceGetConfig.HandlerOutput 2197 + >, 2198 + ) { 2199 + const nsid = "app.bsky.ageassurance.getConfig"; // @ts-ignore - dynamically generated 2200 + return this._server.xrpc.method(nsid, cfg); 2201 + } 2202 + } 2203 + 1542 2204 export class AppBskyActorNS { 1543 2205 _server: Server; 1544 2206 ··· 1754 2416 return this._server.xrpc.method(nsid, cfg); 1755 2417 } 1756 2418 2419 + addReaction<A extends Auth = void>( 2420 + cfg: MethodConfigOrHandler< 2421 + A, 2422 + ChatBskyConvoAddReaction.QueryParams, 2423 + ChatBskyConvoAddReaction.HandlerInput, 2424 + ChatBskyConvoAddReaction.HandlerOutput 2425 + >, 2426 + ) { 2427 + const nsid = "chat.bsky.convo.addReaction"; // @ts-ignore - dynamically generated 2428 + return this._server.xrpc.method(nsid, cfg); 2429 + } 2430 + 1757 2431 acceptConvo<A extends Auth = void>( 1758 2432 cfg: MethodConfigOrHandler< 1759 2433 A, ··· 1787 2461 >, 1788 2462 ) { 1789 2463 const nsid = "chat.bsky.convo.deleteMessageForSelf"; // @ts-ignore - dynamically generated 2464 + return this._server.xrpc.method(nsid, cfg); 2465 + } 2466 + 2467 + removeReaction<A extends Auth = void>( 2468 + cfg: MethodConfigOrHandler< 2469 + A, 2470 + ChatBskyConvoRemoveReaction.QueryParams, 2471 + ChatBskyConvoRemoveReaction.HandlerInput, 2472 + ChatBskyConvoRemoveReaction.HandlerOutput 2473 + >, 2474 + ) { 2475 + const nsid = "chat.bsky.convo.removeReaction"; // @ts-ignore - dynamically generated 1790 2476 return this._server.xrpc.method(nsid, cfg); 1791 2477 } 1792 2478 ··· 2688 3374 this._server = server; 2689 3375 } 2690 3376 3377 + dereferenceScope<A extends Auth = void>( 3378 + cfg: MethodConfigOrHandler< 3379 + A, 3380 + ComAtprotoTempDereferenceScope.QueryParams, 3381 + ComAtprotoTempDereferenceScope.HandlerInput, 3382 + ComAtprotoTempDereferenceScope.HandlerOutput 3383 + >, 3384 + ) { 3385 + const nsid = "com.atproto.temp.dereferenceScope"; // @ts-ignore - dynamically generated 3386 + return this._server.xrpc.method(nsid, cfg); 3387 + } 3388 + 2691 3389 addReservedHandle<A extends Auth = void>( 2692 3390 cfg: MethodConfigOrHandler< 2693 3391 A, ··· 2712 3410 return this._server.xrpc.method(nsid, cfg); 2713 3411 } 2714 3412 3413 + checkHandleAvailability<A extends Auth = void>( 3414 + cfg: MethodConfigOrHandler< 3415 + A, 3416 + ComAtprotoTempCheckHandleAvailability.QueryParams, 3417 + ComAtprotoTempCheckHandleAvailability.HandlerInput, 3418 + ComAtprotoTempCheckHandleAvailability.HandlerOutput 3419 + >, 3420 + ) { 3421 + const nsid = "com.atproto.temp.checkHandleAvailability"; // @ts-ignore - dynamically generated 3422 + return this._server.xrpc.method(nsid, cfg); 3423 + } 3424 + 2715 3425 requestPhoneVerification<A extends Auth = void>( 2716 3426 cfg: MethodConfigOrHandler< 2717 3427 A, ··· 2721 3431 >, 2722 3432 ) { 2723 3433 const nsid = "com.atproto.temp.requestPhoneVerification"; // @ts-ignore - dynamically generated 3434 + return this._server.xrpc.method(nsid, cfg); 3435 + } 3436 + 3437 + revokeAccountCredentials<A extends Auth = void>( 3438 + cfg: MethodConfigOrHandler< 3439 + A, 3440 + ComAtprotoTempRevokeAccountCredentials.QueryParams, 3441 + ComAtprotoTempRevokeAccountCredentials.HandlerInput, 3442 + ComAtprotoTempRevokeAccountCredentials.HandlerOutput 3443 + >, 3444 + ) { 3445 + const nsid = "com.atproto.temp.revokeAccountCredentials"; // @ts-ignore - dynamically generated 2724 3446 return this._server.xrpc.method(nsid, cfg); 2725 3447 } 2726 3448 ··· 2780 3502 return this._server.xrpc.method(nsid, cfg); 2781 3503 } 2782 3504 3505 + resolveIdentity<A extends Auth = void>( 3506 + cfg: MethodConfigOrHandler< 3507 + A, 3508 + ComAtprotoIdentityResolveIdentity.QueryParams, 3509 + ComAtprotoIdentityResolveIdentity.HandlerInput, 3510 + ComAtprotoIdentityResolveIdentity.HandlerOutput 3511 + >, 3512 + ) { 3513 + const nsid = "com.atproto.identity.resolveIdentity"; // @ts-ignore - dynamically generated 3514 + return this._server.xrpc.method(nsid, cfg); 3515 + } 3516 + 3517 + refreshIdentity<A extends Auth = void>( 3518 + cfg: MethodConfigOrHandler< 3519 + A, 3520 + ComAtprotoIdentityRefreshIdentity.QueryParams, 3521 + ComAtprotoIdentityRefreshIdentity.HandlerInput, 3522 + ComAtprotoIdentityRefreshIdentity.HandlerOutput 3523 + >, 3524 + ) { 3525 + const nsid = "com.atproto.identity.refreshIdentity"; // @ts-ignore - dynamically generated 3526 + return this._server.xrpc.method(nsid, cfg); 3527 + } 3528 + 2783 3529 resolveHandle<A extends Auth = void>( 2784 3530 cfg: MethodConfigOrHandler< 2785 3531 A, ··· 2813 3559 >, 2814 3560 ) { 2815 3561 const nsid = "com.atproto.identity.getRecommendedDidCredentials"; // @ts-ignore - dynamically generated 3562 + return this._server.xrpc.method(nsid, cfg); 3563 + } 3564 + 3565 + resolveDid<A extends Auth = void>( 3566 + cfg: MethodConfigOrHandler< 3567 + A, 3568 + ComAtprotoIdentityResolveDid.QueryParams, 3569 + ComAtprotoIdentityResolveDid.HandlerInput, 3570 + ComAtprotoIdentityResolveDid.HandlerOutput 3571 + >, 3572 + ) { 3573 + const nsid = "com.atproto.identity.resolveDid"; // @ts-ignore - dynamically generated 2816 3574 return this._server.xrpc.method(nsid, cfg); 2817 3575 } 2818 3576 } ··· 2905 3663 >, 2906 3664 ) { 2907 3665 const nsid = "com.atproto.admin.getInviteCodes"; // @ts-ignore - dynamically generated 3666 + return this._server.xrpc.method(nsid, cfg); 3667 + } 3668 + 3669 + updateAccountSigningKey<A extends Auth = void>( 3670 + cfg: MethodConfigOrHandler< 3671 + A, 3672 + ComAtprotoAdminUpdateAccountSigningKey.QueryParams, 3673 + ComAtprotoAdminUpdateAccountSigningKey.HandlerInput, 3674 + ComAtprotoAdminUpdateAccountSigningKey.HandlerOutput 3675 + >, 3676 + ) { 3677 + const nsid = "com.atproto.admin.updateAccountSigningKey"; // @ts-ignore - dynamically generated 2908 3678 return this._server.xrpc.method(nsid, cfg); 2909 3679 } 2910 3680 ··· 3338 4108 constructor(server: Server) { 3339 4109 this._server = server; 3340 4110 } 4111 + 4112 + resolveLexicon<A extends Auth = void>( 4113 + cfg: MethodConfigOrHandler< 4114 + A, 4115 + ComAtprotoLexiconResolveLexicon.QueryParams, 4116 + ComAtprotoLexiconResolveLexicon.HandlerInput, 4117 + ComAtprotoLexiconResolveLexicon.HandlerOutput 4118 + >, 4119 + ) { 4120 + const nsid = "com.atproto.lexicon.resolveLexicon"; // @ts-ignore - dynamically generated 4121 + return this._server.xrpc.method(nsid, cfg); 4122 + } 3341 4123 } 3342 4124 3343 4125 export class ComAtprotoSyncNS { ··· 3466 4248 return this._server.xrpc.method(nsid, cfg); 3467 4249 } 3468 4250 4251 + listHosts<A extends Auth = void>( 4252 + cfg: MethodConfigOrHandler< 4253 + A, 4254 + ComAtprotoSyncListHosts.QueryParams, 4255 + ComAtprotoSyncListHosts.HandlerInput, 4256 + ComAtprotoSyncListHosts.HandlerOutput 4257 + >, 4258 + ) { 4259 + const nsid = "com.atproto.sync.listHosts"; // @ts-ignore - dynamically generated 4260 + return this._server.xrpc.method(nsid, cfg); 4261 + } 4262 + 3469 4263 listRepos<A extends Auth = void>( 3470 4264 cfg: MethodConfigOrHandler< 3471 4265 A, ··· 3475 4269 >, 3476 4270 ) { 3477 4271 const nsid = "com.atproto.sync.listRepos"; // @ts-ignore - dynamically generated 4272 + return this._server.xrpc.method(nsid, cfg); 4273 + } 4274 + 4275 + getHostStatus<A extends Auth = void>( 4276 + cfg: MethodConfigOrHandler< 4277 + A, 4278 + ComAtprotoSyncGetHostStatus.QueryParams, 4279 + ComAtprotoSyncGetHostStatus.HandlerInput, 4280 + ComAtprotoSyncGetHostStatus.HandlerOutput 4281 + >, 4282 + ) { 4283 + const nsid = "com.atproto.sync.getHostStatus"; // @ts-ignore - dynamically generated 3478 4284 return this._server.xrpc.method(nsid, cfg); 3479 4285 } 3480 4286
+6019 -167
lex/lexicons.ts
··· 235 235 "type": "ref", 236 236 "ref": "lex:tools.ozone.server.getConfig#viewerConfig", 237 237 }, 238 + "verifierDid": { 239 + "type": "string", 240 + "format": "did", 241 + "description": "The did of the verifier used for verification.", 242 + }, 238 243 }, 239 244 }, 240 245 }, ··· 257 262 "tools.ozone.team.defs#roleAdmin", 258 263 "tools.ozone.team.defs#roleModerator", 259 264 "tools.ozone.team.defs#roleTriage", 265 + "tools.ozone.team.defs#roleVerifier", 260 266 ], 261 267 }, 262 268 }, 263 269 }, 264 270 }, 265 271 }, 272 + "ToolsOzoneVerificationRevokeVerifications": { 273 + "lexicon": 1, 274 + "id": "tools.ozone.verification.revokeVerifications", 275 + "defs": { 276 + "main": { 277 + "type": "procedure", 278 + "description": 279 + "Revoke previously granted verifications in batches of up to 100.", 280 + "input": { 281 + "encoding": "application/json", 282 + "schema": { 283 + "type": "object", 284 + "required": [ 285 + "uris", 286 + ], 287 + "properties": { 288 + "uris": { 289 + "type": "array", 290 + "description": "Array of verification record uris to revoke", 291 + "maxLength": 100, 292 + "items": { 293 + "type": "string", 294 + "description": 295 + "The AT-URI of the verification record to revoke.", 296 + "format": "at-uri", 297 + }, 298 + }, 299 + "revokeReason": { 300 + "type": "string", 301 + "description": 302 + "Reason for revoking the verification. This is optional and can be omitted if not needed.", 303 + "maxLength": 1000, 304 + }, 305 + }, 306 + }, 307 + }, 308 + "output": { 309 + "encoding": "application/json", 310 + "schema": { 311 + "type": "object", 312 + "required": [ 313 + "revokedVerifications", 314 + "failedRevocations", 315 + ], 316 + "properties": { 317 + "revokedVerifications": { 318 + "type": "array", 319 + "description": "List of verification uris successfully revoked", 320 + "items": { 321 + "type": "string", 322 + "format": "at-uri", 323 + }, 324 + }, 325 + "failedRevocations": { 326 + "type": "array", 327 + "description": 328 + "List of verification uris that couldn't be revoked, including failure reasons", 329 + "items": { 330 + "type": "ref", 331 + "ref": 332 + "lex:tools.ozone.verification.revokeVerifications#revokeError", 333 + }, 334 + }, 335 + }, 336 + }, 337 + }, 338 + }, 339 + "revokeError": { 340 + "type": "object", 341 + "description": "Error object for failed revocations", 342 + "required": [ 343 + "uri", 344 + "error", 345 + ], 346 + "properties": { 347 + "uri": { 348 + "type": "string", 349 + "description": 350 + "The AT-URI of the verification record that failed to revoke.", 351 + "format": "at-uri", 352 + }, 353 + "error": { 354 + "type": "string", 355 + "description": 356 + "Description of the error that occurred during revocation.", 357 + }, 358 + }, 359 + }, 360 + }, 361 + }, 362 + "ToolsOzoneVerificationDefs": { 363 + "lexicon": 1, 364 + "id": "tools.ozone.verification.defs", 365 + "defs": { 366 + "verificationView": { 367 + "type": "object", 368 + "description": "Verification data for the associated subject.", 369 + "required": [ 370 + "issuer", 371 + "uri", 372 + "subject", 373 + "handle", 374 + "displayName", 375 + "createdAt", 376 + ], 377 + "properties": { 378 + "issuer": { 379 + "type": "string", 380 + "description": "The user who issued this verification.", 381 + "format": "did", 382 + }, 383 + "uri": { 384 + "type": "string", 385 + "description": "The AT-URI of the verification record.", 386 + "format": "at-uri", 387 + }, 388 + "subject": { 389 + "type": "string", 390 + "format": "did", 391 + "description": "The subject of the verification.", 392 + }, 393 + "handle": { 394 + "type": "string", 395 + "description": 396 + "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.", 397 + "format": "handle", 398 + }, 399 + "displayName": { 400 + "type": "string", 401 + "description": 402 + "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.", 403 + }, 404 + "createdAt": { 405 + "type": "string", 406 + "description": "Timestamp when the verification was created.", 407 + "format": "datetime", 408 + }, 409 + "revokeReason": { 410 + "type": "string", 411 + "description": 412 + "Describes the reason for revocation, also indicating that the verification is no longer valid.", 413 + }, 414 + "revokedAt": { 415 + "type": "string", 416 + "description": "Timestamp when the verification was revoked.", 417 + "format": "datetime", 418 + }, 419 + "revokedBy": { 420 + "type": "string", 421 + "description": "The user who revoked this verification.", 422 + "format": "did", 423 + }, 424 + "subjectProfile": { 425 + "type": "union", 426 + "refs": [], 427 + }, 428 + "issuerProfile": { 429 + "type": "union", 430 + "refs": [], 431 + }, 432 + "subjectRepo": { 433 + "type": "union", 434 + "refs": [ 435 + "lex:tools.ozone.moderation.defs#repoViewDetail", 436 + "lex:tools.ozone.moderation.defs#repoViewNotFound", 437 + ], 438 + }, 439 + "issuerRepo": { 440 + "type": "union", 441 + "refs": [ 442 + "lex:tools.ozone.moderation.defs#repoViewDetail", 443 + "lex:tools.ozone.moderation.defs#repoViewNotFound", 444 + ], 445 + }, 446 + }, 447 + }, 448 + }, 449 + }, 450 + "ToolsOzoneVerificationGrantVerifications": { 451 + "lexicon": 1, 452 + "id": "tools.ozone.verification.grantVerifications", 453 + "defs": { 454 + "main": { 455 + "type": "procedure", 456 + "description": 457 + "Grant verifications to multiple subjects. Allows batch processing of up to 100 verifications at once.", 458 + "input": { 459 + "encoding": "application/json", 460 + "schema": { 461 + "type": "object", 462 + "required": [ 463 + "verifications", 464 + ], 465 + "properties": { 466 + "verifications": { 467 + "type": "array", 468 + "description": "Array of verification requests to process", 469 + "maxLength": 100, 470 + "items": { 471 + "type": "ref", 472 + "ref": 473 + "lex:tools.ozone.verification.grantVerifications#verificationInput", 474 + }, 475 + }, 476 + }, 477 + }, 478 + }, 479 + "output": { 480 + "encoding": "application/json", 481 + "schema": { 482 + "type": "object", 483 + "required": [ 484 + "verifications", 485 + "failedVerifications", 486 + ], 487 + "properties": { 488 + "verifications": { 489 + "type": "array", 490 + "items": { 491 + "type": "ref", 492 + "ref": "lex:tools.ozone.verification.defs#verificationView", 493 + }, 494 + }, 495 + "failedVerifications": { 496 + "type": "array", 497 + "items": { 498 + "type": "ref", 499 + "ref": 500 + "lex:tools.ozone.verification.grantVerifications#grantError", 501 + }, 502 + }, 503 + }, 504 + }, 505 + }, 506 + }, 507 + "verificationInput": { 508 + "type": "object", 509 + "required": [ 510 + "subject", 511 + "handle", 512 + "displayName", 513 + ], 514 + "properties": { 515 + "subject": { 516 + "type": "string", 517 + "description": "The did of the subject being verified", 518 + "format": "did", 519 + }, 520 + "handle": { 521 + "type": "string", 522 + "description": 523 + "Handle of the subject the verification applies to at the moment of verifying.", 524 + "format": "handle", 525 + }, 526 + "displayName": { 527 + "type": "string", 528 + "description": 529 + "Display name of the subject the verification applies to at the moment of verifying.", 530 + }, 531 + "createdAt": { 532 + "type": "string", 533 + "format": "datetime", 534 + "description": 535 + "Timestamp for verification record. Defaults to current time when not specified.", 536 + }, 537 + }, 538 + }, 539 + "grantError": { 540 + "type": "object", 541 + "description": "Error object for failed verifications.", 542 + "required": [ 543 + "error", 544 + "subject", 545 + ], 546 + "properties": { 547 + "error": { 548 + "type": "string", 549 + "description": "Error message describing the reason for failure.", 550 + }, 551 + "subject": { 552 + "type": "string", 553 + "description": "The did of the subject being verified", 554 + "format": "did", 555 + }, 556 + }, 557 + }, 558 + }, 559 + }, 560 + "ToolsOzoneVerificationListVerifications": { 561 + "lexicon": 1, 562 + "id": "tools.ozone.verification.listVerifications", 563 + "defs": { 564 + "main": { 565 + "type": "query", 566 + "description": "List verifications", 567 + "parameters": { 568 + "type": "params", 569 + "properties": { 570 + "cursor": { 571 + "type": "string", 572 + "description": "Pagination cursor", 573 + }, 574 + "limit": { 575 + "type": "integer", 576 + "description": "Maximum number of results to return", 577 + "minimum": 1, 578 + "maximum": 100, 579 + "default": 50, 580 + }, 581 + "createdAfter": { 582 + "type": "string", 583 + "format": "datetime", 584 + "description": 585 + "Filter to verifications created after this timestamp", 586 + }, 587 + "createdBefore": { 588 + "type": "string", 589 + "format": "datetime", 590 + "description": 591 + "Filter to verifications created before this timestamp", 592 + }, 593 + "issuers": { 594 + "type": "array", 595 + "maxLength": 100, 596 + "description": "Filter to verifications from specific issuers", 597 + "items": { 598 + "type": "string", 599 + "format": "did", 600 + }, 601 + }, 602 + "subjects": { 603 + "type": "array", 604 + "description": "Filter to specific verified DIDs", 605 + "maxLength": 100, 606 + "items": { 607 + "type": "string", 608 + "format": "did", 609 + }, 610 + }, 611 + "sortDirection": { 612 + "type": "string", 613 + "description": "Sort direction for creation date", 614 + "enum": [ 615 + "asc", 616 + "desc", 617 + ], 618 + "default": "desc", 619 + }, 620 + "isRevoked": { 621 + "type": "boolean", 622 + "description": 623 + "Filter to verifications that are revoked or not. By default, includes both.", 624 + }, 625 + }, 626 + }, 627 + "output": { 628 + "encoding": "application/json", 629 + "schema": { 630 + "type": "object", 631 + "required": [ 632 + "verifications", 633 + ], 634 + "properties": { 635 + "cursor": { 636 + "type": "string", 637 + }, 638 + "verifications": { 639 + "type": "array", 640 + "items": { 641 + "type": "ref", 642 + "ref": "lex:tools.ozone.verification.defs#verificationView", 643 + }, 644 + }, 645 + }, 646 + }, 647 + }, 648 + }, 649 + }, 650 + }, 651 + "ToolsOzoneSafelinkDefs": { 652 + "lexicon": 1, 653 + "id": "tools.ozone.safelink.defs", 654 + "defs": { 655 + "event": { 656 + "type": "object", 657 + "description": "An event for URL safety decisions", 658 + "required": [ 659 + "id", 660 + "eventType", 661 + "url", 662 + "pattern", 663 + "action", 664 + "reason", 665 + "createdBy", 666 + "createdAt", 667 + ], 668 + "properties": { 669 + "id": { 670 + "type": "integer", 671 + "description": "Auto-incrementing row ID", 672 + }, 673 + "eventType": { 674 + "type": "ref", 675 + "ref": "lex:tools.ozone.safelink.defs#eventType", 676 + }, 677 + "url": { 678 + "type": "string", 679 + "description": "The URL that this rule applies to", 680 + }, 681 + "pattern": { 682 + "type": "ref", 683 + "ref": "lex:tools.ozone.safelink.defs#patternType", 684 + }, 685 + "action": { 686 + "type": "ref", 687 + "ref": "lex:tools.ozone.safelink.defs#actionType", 688 + }, 689 + "reason": { 690 + "type": "ref", 691 + "ref": "lex:tools.ozone.safelink.defs#reasonType", 692 + }, 693 + "createdBy": { 694 + "type": "string", 695 + "format": "did", 696 + "description": "DID of the user who created this rule", 697 + }, 698 + "createdAt": { 699 + "type": "string", 700 + "format": "datetime", 701 + }, 702 + "comment": { 703 + "type": "string", 704 + "description": "Optional comment about the decision", 705 + }, 706 + }, 707 + }, 708 + "eventType": { 709 + "type": "string", 710 + "knownValues": [ 711 + "addRule", 712 + "updateRule", 713 + "removeRule", 714 + ], 715 + }, 716 + "patternType": { 717 + "type": "string", 718 + "knownValues": [ 719 + "domain", 720 + "url", 721 + ], 722 + }, 723 + "actionType": { 724 + "type": "string", 725 + "knownValues": [ 726 + "block", 727 + "warn", 728 + "whitelist", 729 + ], 730 + }, 731 + "reasonType": { 732 + "type": "string", 733 + "knownValues": [ 734 + "csam", 735 + "spam", 736 + "phishing", 737 + "none", 738 + ], 739 + }, 740 + "urlRule": { 741 + "type": "object", 742 + "description": "Input for creating a URL safety rule", 743 + "required": [ 744 + "url", 745 + "pattern", 746 + "action", 747 + "reason", 748 + "createdBy", 749 + "createdAt", 750 + "updatedAt", 751 + ], 752 + "properties": { 753 + "url": { 754 + "type": "string", 755 + "description": "The URL or domain to apply the rule to", 756 + }, 757 + "pattern": { 758 + "type": "ref", 759 + "ref": "lex:tools.ozone.safelink.defs#patternType", 760 + }, 761 + "action": { 762 + "type": "ref", 763 + "ref": "lex:tools.ozone.safelink.defs#actionType", 764 + }, 765 + "reason": { 766 + "type": "ref", 767 + "ref": "lex:tools.ozone.safelink.defs#reasonType", 768 + }, 769 + "comment": { 770 + "type": "string", 771 + "description": "Optional comment about the decision", 772 + }, 773 + "createdBy": { 774 + "type": "string", 775 + "format": "did", 776 + "description": "DID of the user added the rule.", 777 + }, 778 + "createdAt": { 779 + "type": "string", 780 + "format": "datetime", 781 + "description": "Timestamp when the rule was created", 782 + }, 783 + "updatedAt": { 784 + "type": "string", 785 + "format": "datetime", 786 + "description": "Timestamp when the rule was last updated", 787 + }, 788 + }, 789 + }, 790 + }, 791 + }, 792 + "ToolsOzoneSafelinkAddRule": { 793 + "lexicon": 1, 794 + "id": "tools.ozone.safelink.addRule", 795 + "defs": { 796 + "main": { 797 + "type": "procedure", 798 + "description": "Add a new URL safety rule", 799 + "input": { 800 + "encoding": "application/json", 801 + "schema": { 802 + "type": "object", 803 + "required": [ 804 + "url", 805 + "pattern", 806 + "action", 807 + "reason", 808 + ], 809 + "properties": { 810 + "url": { 811 + "type": "string", 812 + "description": "The URL or domain to apply the rule to", 813 + }, 814 + "pattern": { 815 + "type": "ref", 816 + "ref": "lex:tools.ozone.safelink.defs#patternType", 817 + }, 818 + "action": { 819 + "type": "ref", 820 + "ref": "lex:tools.ozone.safelink.defs#actionType", 821 + }, 822 + "reason": { 823 + "type": "ref", 824 + "ref": "lex:tools.ozone.safelink.defs#reasonType", 825 + }, 826 + "comment": { 827 + "type": "string", 828 + "description": "Optional comment about the decision", 829 + }, 830 + "createdBy": { 831 + "type": "string", 832 + "format": "did", 833 + "description": 834 + "Author DID. Only respected when using admin auth", 835 + }, 836 + }, 837 + }, 838 + }, 839 + "output": { 840 + "encoding": "application/json", 841 + "schema": { 842 + "type": "ref", 843 + "ref": "lex:tools.ozone.safelink.defs#event", 844 + }, 845 + }, 846 + "errors": [ 847 + { 848 + "name": "InvalidUrl", 849 + "description": "The provided URL is invalid", 850 + }, 851 + { 852 + "name": "RuleAlreadyExists", 853 + "description": "A rule for this URL/domain already exists", 854 + }, 855 + ], 856 + }, 857 + }, 858 + }, 859 + "ToolsOzoneSafelinkRemoveRule": { 860 + "lexicon": 1, 861 + "id": "tools.ozone.safelink.removeRule", 862 + "defs": { 863 + "main": { 864 + "type": "procedure", 865 + "description": "Remove an existing URL safety rule", 866 + "input": { 867 + "encoding": "application/json", 868 + "schema": { 869 + "type": "object", 870 + "required": [ 871 + "url", 872 + "pattern", 873 + ], 874 + "properties": { 875 + "url": { 876 + "type": "string", 877 + "description": "The URL or domain to remove the rule for", 878 + }, 879 + "pattern": { 880 + "type": "ref", 881 + "ref": "lex:tools.ozone.safelink.defs#patternType", 882 + }, 883 + "comment": { 884 + "type": "string", 885 + "description": 886 + "Optional comment about why the rule is being removed", 887 + }, 888 + "createdBy": { 889 + "type": "string", 890 + "format": "did", 891 + "description": 892 + "Optional DID of the user. Only respected when using admin auth.", 893 + }, 894 + }, 895 + }, 896 + }, 897 + "output": { 898 + "encoding": "application/json", 899 + "schema": { 900 + "type": "ref", 901 + "ref": "lex:tools.ozone.safelink.defs#event", 902 + }, 903 + }, 904 + "errors": [ 905 + { 906 + "name": "RuleNotFound", 907 + "description": "No active rule found for this URL/domain", 908 + }, 909 + ], 910 + }, 911 + }, 912 + }, 913 + "ToolsOzoneSafelinkUpdateRule": { 914 + "lexicon": 1, 915 + "id": "tools.ozone.safelink.updateRule", 916 + "defs": { 917 + "main": { 918 + "type": "procedure", 919 + "description": "Update an existing URL safety rule", 920 + "input": { 921 + "encoding": "application/json", 922 + "schema": { 923 + "type": "object", 924 + "required": [ 925 + "url", 926 + "pattern", 927 + "action", 928 + "reason", 929 + ], 930 + "properties": { 931 + "url": { 932 + "type": "string", 933 + "description": "The URL or domain to update the rule for", 934 + }, 935 + "pattern": { 936 + "type": "ref", 937 + "ref": "lex:tools.ozone.safelink.defs#patternType", 938 + }, 939 + "action": { 940 + "type": "ref", 941 + "ref": "lex:tools.ozone.safelink.defs#actionType", 942 + }, 943 + "reason": { 944 + "type": "ref", 945 + "ref": "lex:tools.ozone.safelink.defs#reasonType", 946 + }, 947 + "comment": { 948 + "type": "string", 949 + "description": "Optional comment about the update", 950 + }, 951 + "createdBy": { 952 + "type": "string", 953 + "format": "did", 954 + "description": 955 + "Optional DID to credit as the creator. Only respected for admin_token authentication.", 956 + }, 957 + }, 958 + }, 959 + }, 960 + "output": { 961 + "encoding": "application/json", 962 + "schema": { 963 + "type": "ref", 964 + "ref": "lex:tools.ozone.safelink.defs#event", 965 + }, 966 + }, 967 + "errors": [ 968 + { 969 + "name": "RuleNotFound", 970 + "description": "No active rule found for this URL/domain", 971 + }, 972 + ], 973 + }, 974 + }, 975 + }, 976 + "ToolsOzoneSafelinkQueryEvents": { 977 + "lexicon": 1, 978 + "id": "tools.ozone.safelink.queryEvents", 979 + "defs": { 980 + "main": { 981 + "type": "procedure", 982 + "description": "Query URL safety audit events", 983 + "input": { 984 + "encoding": "application/json", 985 + "schema": { 986 + "type": "object", 987 + "properties": { 988 + "cursor": { 989 + "type": "string", 990 + "description": "Cursor for pagination", 991 + }, 992 + "limit": { 993 + "type": "integer", 994 + "minimum": 1, 995 + "maximum": 100, 996 + "default": 50, 997 + "description": "Maximum number of results to return", 998 + }, 999 + "urls": { 1000 + "type": "array", 1001 + "items": { 1002 + "type": "string", 1003 + }, 1004 + "description": "Filter by specific URLs or domains", 1005 + }, 1006 + "patternType": { 1007 + "type": "string", 1008 + "description": "Filter by pattern type", 1009 + }, 1010 + "sortDirection": { 1011 + "type": "string", 1012 + "knownValues": [ 1013 + "asc", 1014 + "desc", 1015 + ], 1016 + "default": "desc", 1017 + "description": "Sort direction", 1018 + }, 1019 + }, 1020 + }, 1021 + }, 1022 + "output": { 1023 + "encoding": "application/json", 1024 + "schema": { 1025 + "type": "object", 1026 + "required": [ 1027 + "events", 1028 + ], 1029 + "properties": { 1030 + "cursor": { 1031 + "type": "string", 1032 + "description": 1033 + "Next cursor for pagination. Only present if there are more results.", 1034 + }, 1035 + "events": { 1036 + "type": "array", 1037 + "items": { 1038 + "type": "ref", 1039 + "ref": "lex:tools.ozone.safelink.defs#event", 1040 + }, 1041 + }, 1042 + }, 1043 + }, 1044 + }, 1045 + }, 1046 + }, 1047 + }, 1048 + "ToolsOzoneSafelinkQueryRules": { 1049 + "lexicon": 1, 1050 + "id": "tools.ozone.safelink.queryRules", 1051 + "defs": { 1052 + "main": { 1053 + "type": "procedure", 1054 + "description": "Query URL safety rules", 1055 + "input": { 1056 + "encoding": "application/json", 1057 + "schema": { 1058 + "type": "object", 1059 + "properties": { 1060 + "cursor": { 1061 + "type": "string", 1062 + "description": "Cursor for pagination", 1063 + }, 1064 + "limit": { 1065 + "type": "integer", 1066 + "minimum": 1, 1067 + "maximum": 100, 1068 + "default": 50, 1069 + "description": "Maximum number of results to return", 1070 + }, 1071 + "urls": { 1072 + "type": "array", 1073 + "items": { 1074 + "type": "string", 1075 + }, 1076 + "description": "Filter by specific URLs or domains", 1077 + }, 1078 + "patternType": { 1079 + "type": "string", 1080 + "description": "Filter by pattern type", 1081 + }, 1082 + "actions": { 1083 + "type": "array", 1084 + "items": { 1085 + "type": "string", 1086 + }, 1087 + "description": "Filter by action types", 1088 + }, 1089 + "reason": { 1090 + "type": "string", 1091 + "description": "Filter by reason type", 1092 + }, 1093 + "createdBy": { 1094 + "type": "string", 1095 + "format": "did", 1096 + "description": "Filter by rule creator", 1097 + }, 1098 + "sortDirection": { 1099 + "type": "string", 1100 + "knownValues": [ 1101 + "asc", 1102 + "desc", 1103 + ], 1104 + "default": "desc", 1105 + "description": "Sort direction", 1106 + }, 1107 + }, 1108 + }, 1109 + }, 1110 + "output": { 1111 + "encoding": "application/json", 1112 + "schema": { 1113 + "type": "object", 1114 + "required": [ 1115 + "rules", 1116 + ], 1117 + "properties": { 1118 + "cursor": { 1119 + "type": "string", 1120 + "description": 1121 + "Next cursor for pagination. Only present if there are more results.", 1122 + }, 1123 + "rules": { 1124 + "type": "array", 1125 + "items": { 1126 + "type": "ref", 1127 + "ref": "lex:tools.ozone.safelink.defs#urlRule", 1128 + }, 1129 + }, 1130 + }, 1131 + }, 1132 + }, 1133 + }, 1134 + }, 1135 + }, 266 1136 "ToolsOzoneTeamListMembers": { 267 1137 "lexicon": 1, 268 1138 "id": "tools.ozone.team.listMembers", ··· 273 1143 "parameters": { 274 1144 "type": "params", 275 1145 "properties": { 1146 + "q": { 1147 + "type": "string", 1148 + }, 276 1149 "disabled": { 277 1150 "type": "boolean", 278 1151 }, ··· 353 1226 "role": { 354 1227 "type": "string", 355 1228 "knownValues": [ 356 - "lex:tools.ozone.team.defs#roleAdmin", 357 - "lex:tools.ozone.team.defs#roleModerator", 358 - "lex:tools.ozone.team.defs#roleTriage", 1229 + "tools.ozone.team.defs#roleAdmin", 1230 + "tools.ozone.team.defs#roleModerator", 1231 + "tools.ozone.team.defs#roleTriage", 1232 + "tools.ozone.team.defs#roleVerifier", 359 1233 ], 360 1234 }, 361 1235 }, ··· 373 1247 "type": "token", 374 1248 "description": 375 1249 "Triage role. Mostly intended for monitoring and escalating issues.", 1250 + }, 1251 + "roleVerifier": { 1252 + "type": "token", 1253 + "description": "Verifier role. Only allowed to issue verifications.", 376 1254 }, 377 1255 }, 378 1256 }, ··· 439 1317 "knownValues": [ 440 1318 "tools.ozone.team.defs#roleAdmin", 441 1319 "tools.ozone.team.defs#roleModerator", 1320 + "tools.ozone.team.defs#roleVerifier", 442 1321 "tools.ozone.team.defs#roleTriage", 443 1322 ], 444 1323 }, ··· 487 1366 "knownValues": [ 488 1367 "tools.ozone.team.defs#roleAdmin", 489 1368 "tools.ozone.team.defs#roleModerator", 1369 + "tools.ozone.team.defs#roleVerifier", 490 1370 "tools.ozone.team.defs#roleTriage", 491 1371 ], 492 1372 }, ··· 509 1389 }, 510 1390 }, 511 1391 }, 1392 + "ToolsOzoneHostingGetAccountHistory": { 1393 + "lexicon": 1, 1394 + "id": "tools.ozone.hosting.getAccountHistory", 1395 + "defs": { 1396 + "main": { 1397 + "type": "query", 1398 + "description": 1399 + "Get account history, e.g. log of updated email addresses or other identity information.", 1400 + "parameters": { 1401 + "type": "params", 1402 + "required": [ 1403 + "did", 1404 + ], 1405 + "properties": { 1406 + "did": { 1407 + "type": "string", 1408 + "format": "did", 1409 + }, 1410 + "events": { 1411 + "type": "array", 1412 + "items": { 1413 + "type": "string", 1414 + "knownValues": [ 1415 + "accountCreated", 1416 + "emailUpdated", 1417 + "emailConfirmed", 1418 + "passwordUpdated", 1419 + "handleUpdated", 1420 + ], 1421 + }, 1422 + }, 1423 + "cursor": { 1424 + "type": "string", 1425 + }, 1426 + "limit": { 1427 + "type": "integer", 1428 + "minimum": 1, 1429 + "maximum": 100, 1430 + "default": 50, 1431 + }, 1432 + }, 1433 + }, 1434 + "output": { 1435 + "encoding": "application/json", 1436 + "schema": { 1437 + "type": "object", 1438 + "required": [ 1439 + "events", 1440 + ], 1441 + "properties": { 1442 + "cursor": { 1443 + "type": "string", 1444 + }, 1445 + "events": { 1446 + "type": "array", 1447 + "items": { 1448 + "type": "ref", 1449 + "ref": "lex:tools.ozone.hosting.getAccountHistory#event", 1450 + }, 1451 + }, 1452 + }, 1453 + }, 1454 + }, 1455 + }, 1456 + "event": { 1457 + "type": "object", 1458 + "required": [ 1459 + "details", 1460 + "createdBy", 1461 + "createdAt", 1462 + ], 1463 + "properties": { 1464 + "details": { 1465 + "type": "union", 1466 + "refs": [ 1467 + "lex:tools.ozone.hosting.getAccountHistory#accountCreated", 1468 + "lex:tools.ozone.hosting.getAccountHistory#emailUpdated", 1469 + "lex:tools.ozone.hosting.getAccountHistory#emailConfirmed", 1470 + "lex:tools.ozone.hosting.getAccountHistory#passwordUpdated", 1471 + "lex:tools.ozone.hosting.getAccountHistory#handleUpdated", 1472 + ], 1473 + }, 1474 + "createdBy": { 1475 + "type": "string", 1476 + }, 1477 + "createdAt": { 1478 + "type": "string", 1479 + "format": "datetime", 1480 + }, 1481 + }, 1482 + }, 1483 + "accountCreated": { 1484 + "type": "object", 1485 + "required": [], 1486 + "properties": { 1487 + "email": { 1488 + "type": "string", 1489 + }, 1490 + "handle": { 1491 + "type": "string", 1492 + "format": "handle", 1493 + }, 1494 + }, 1495 + }, 1496 + "emailUpdated": { 1497 + "type": "object", 1498 + "required": [ 1499 + "email", 1500 + ], 1501 + "properties": { 1502 + "email": { 1503 + "type": "string", 1504 + }, 1505 + }, 1506 + }, 1507 + "emailConfirmed": { 1508 + "type": "object", 1509 + "required": [ 1510 + "email", 1511 + ], 1512 + "properties": { 1513 + "email": { 1514 + "type": "string", 1515 + }, 1516 + }, 1517 + }, 1518 + "passwordUpdated": { 1519 + "type": "object", 1520 + "required": [], 1521 + "properties": {}, 1522 + }, 1523 + "handleUpdated": { 1524 + "type": "object", 1525 + "required": [ 1526 + "handle", 1527 + ], 1528 + "properties": { 1529 + "handle": { 1530 + "type": "string", 1531 + "format": "handle", 1532 + }, 1533 + }, 1534 + }, 1535 + }, 1536 + }, 1537 + "ToolsOzoneReportDefs": { 1538 + "lexicon": 1, 1539 + "id": "tools.ozone.report.defs", 1540 + "defs": { 1541 + "reasonType": { 1542 + "type": "string", 1543 + "knownValues": [ 1544 + "tools.ozone.report.defs#reasonAppeal", 1545 + "tools.ozone.report.defs#reasonOther", 1546 + "tools.ozone.report.defs#reasonViolenceAnimal", 1547 + "tools.ozone.report.defs#reasonViolenceThreats", 1548 + "tools.ozone.report.defs#reasonViolenceGraphicContent", 1549 + "tools.ozone.report.defs#reasonViolenceGlorification", 1550 + "tools.ozone.report.defs#reasonViolenceExtremistContent", 1551 + "tools.ozone.report.defs#reasonViolenceTrafficking", 1552 + "tools.ozone.report.defs#reasonViolenceOther", 1553 + "tools.ozone.report.defs#reasonSexualAbuseContent", 1554 + "tools.ozone.report.defs#reasonSexualNCII", 1555 + "tools.ozone.report.defs#reasonSexualDeepfake", 1556 + "tools.ozone.report.defs#reasonSexualAnimal", 1557 + "tools.ozone.report.defs#reasonSexualUnlabeled", 1558 + "tools.ozone.report.defs#reasonSexualOther", 1559 + "tools.ozone.report.defs#reasonChildSafetyCSAM", 1560 + "tools.ozone.report.defs#reasonChildSafetyGroom", 1561 + "tools.ozone.report.defs#reasonChildSafetyPrivacy", 1562 + "tools.ozone.report.defs#reasonChildSafetyHarassment", 1563 + "tools.ozone.report.defs#reasonChildSafetyOther", 1564 + "tools.ozone.report.defs#reasonHarassmentTroll", 1565 + "tools.ozone.report.defs#reasonHarassmentTargeted", 1566 + "tools.ozone.report.defs#reasonHarassmentHateSpeech", 1567 + "tools.ozone.report.defs#reasonHarassmentDoxxing", 1568 + "tools.ozone.report.defs#reasonHarassmentOther", 1569 + "tools.ozone.report.defs#reasonMisleadingBot", 1570 + "tools.ozone.report.defs#reasonMisleadingImpersonation", 1571 + "tools.ozone.report.defs#reasonMisleadingSpam", 1572 + "tools.ozone.report.defs#reasonMisleadingScam", 1573 + "tools.ozone.report.defs#reasonMisleadingElections", 1574 + "tools.ozone.report.defs#reasonMisleadingOther", 1575 + "tools.ozone.report.defs#reasonRuleSiteSecurity", 1576 + "tools.ozone.report.defs#reasonRuleProhibitedSales", 1577 + "tools.ozone.report.defs#reasonRuleBanEvasion", 1578 + "tools.ozone.report.defs#reasonRuleOther", 1579 + "tools.ozone.report.defs#reasonSelfHarmContent", 1580 + "tools.ozone.report.defs#reasonSelfHarmED", 1581 + "tools.ozone.report.defs#reasonSelfHarmStunts", 1582 + "tools.ozone.report.defs#reasonSelfHarmSubstances", 1583 + "tools.ozone.report.defs#reasonSelfHarmOther", 1584 + ], 1585 + }, 1586 + "reasonAppeal": { 1587 + "type": "token", 1588 + "description": "Appeal a previously taken moderation action", 1589 + }, 1590 + "reasonOther": { 1591 + "type": "token", 1592 + "description": "An issue not included in these options", 1593 + }, 1594 + "reasonViolenceAnimal": { 1595 + "type": "token", 1596 + "description": "Animal welfare violations", 1597 + }, 1598 + "reasonViolenceThreats": { 1599 + "type": "token", 1600 + "description": "Threats or incitement", 1601 + }, 1602 + "reasonViolenceGraphicContent": { 1603 + "type": "token", 1604 + "description": "Graphic violent content", 1605 + }, 1606 + "reasonViolenceGlorification": { 1607 + "type": "token", 1608 + "description": "Glorification of violence", 1609 + }, 1610 + "reasonViolenceExtremistContent": { 1611 + "type": "token", 1612 + "description": 1613 + "Extremist content. These reports will be sent only be sent to the application's Moderation Authority.", 1614 + }, 1615 + "reasonViolenceTrafficking": { 1616 + "type": "token", 1617 + "description": "Human trafficking", 1618 + }, 1619 + "reasonViolenceOther": { 1620 + "type": "token", 1621 + "description": "Other violent content", 1622 + }, 1623 + "reasonSexualAbuseContent": { 1624 + "type": "token", 1625 + "description": "Adult sexual abuse content", 1626 + }, 1627 + "reasonSexualNCII": { 1628 + "type": "token", 1629 + "description": "Non-consensual intimate imagery", 1630 + }, 1631 + "reasonSexualDeepfake": { 1632 + "type": "token", 1633 + "description": "Deepfake adult content", 1634 + }, 1635 + "reasonSexualAnimal": { 1636 + "type": "token", 1637 + "description": "Animal sexual abuse", 1638 + }, 1639 + "reasonSexualUnlabeled": { 1640 + "type": "token", 1641 + "description": "Unlabelled adult content", 1642 + }, 1643 + "reasonSexualOther": { 1644 + "type": "token", 1645 + "description": "Other sexual violence content", 1646 + }, 1647 + "reasonChildSafetyCSAM": { 1648 + "type": "token", 1649 + "description": 1650 + "Child sexual abuse material (CSAM). These reports will be sent only be sent to the application's Moderation Authority.", 1651 + }, 1652 + "reasonChildSafetyGroom": { 1653 + "type": "token", 1654 + "description": 1655 + "Grooming or predatory behavior. These reports will be sent only be sent to the application's Moderation Authority.", 1656 + }, 1657 + "reasonChildSafetyPrivacy": { 1658 + "type": "token", 1659 + "description": "Privacy violation involving a minor", 1660 + }, 1661 + "reasonChildSafetyHarassment": { 1662 + "type": "token", 1663 + "description": "Harassment or bullying of minors", 1664 + }, 1665 + "reasonChildSafetyOther": { 1666 + "type": "token", 1667 + "description": 1668 + "Other child safety. These reports will be sent only be sent to the application's Moderation Authority.", 1669 + }, 1670 + "reasonHarassmentTroll": { 1671 + "type": "token", 1672 + "description": "Trolling", 1673 + }, 1674 + "reasonHarassmentTargeted": { 1675 + "type": "token", 1676 + "description": "Targeted harassment", 1677 + }, 1678 + "reasonHarassmentHateSpeech": { 1679 + "type": "token", 1680 + "description": "Hate speech", 1681 + }, 1682 + "reasonHarassmentDoxxing": { 1683 + "type": "token", 1684 + "description": "Doxxing", 1685 + }, 1686 + "reasonHarassmentOther": { 1687 + "type": "token", 1688 + "description": "Other harassing or hateful content", 1689 + }, 1690 + "reasonMisleadingBot": { 1691 + "type": "token", 1692 + "description": "Fake account or bot", 1693 + }, 1694 + "reasonMisleadingImpersonation": { 1695 + "type": "token", 1696 + "description": "Impersonation", 1697 + }, 1698 + "reasonMisleadingSpam": { 1699 + "type": "token", 1700 + "description": "Spam", 1701 + }, 1702 + "reasonMisleadingScam": { 1703 + "type": "token", 1704 + "description": "Scam", 1705 + }, 1706 + "reasonMisleadingElections": { 1707 + "type": "token", 1708 + "description": "False information about elections", 1709 + }, 1710 + "reasonMisleadingOther": { 1711 + "type": "token", 1712 + "description": "Other misleading content", 1713 + }, 1714 + "reasonRuleSiteSecurity": { 1715 + "type": "token", 1716 + "description": "Hacking or system attacks", 1717 + }, 1718 + "reasonRuleProhibitedSales": { 1719 + "type": "token", 1720 + "description": "Promoting or selling prohibited items or services", 1721 + }, 1722 + "reasonRuleBanEvasion": { 1723 + "type": "token", 1724 + "description": "Banned user returning", 1725 + }, 1726 + "reasonRuleOther": { 1727 + "type": "token", 1728 + "description": "Other", 1729 + }, 1730 + "reasonSelfHarmContent": { 1731 + "type": "token", 1732 + "description": "Content promoting or depicting self-harm", 1733 + }, 1734 + "reasonSelfHarmED": { 1735 + "type": "token", 1736 + "description": "Eating disorders", 1737 + }, 1738 + "reasonSelfHarmStunts": { 1739 + "type": "token", 1740 + "description": "Dangerous challenges or activities", 1741 + }, 1742 + "reasonSelfHarmSubstances": { 1743 + "type": "token", 1744 + "description": "Dangerous substances or drug abuse", 1745 + }, 1746 + "reasonSelfHarmOther": { 1747 + "type": "token", 1748 + "description": "Other dangerous content", 1749 + }, 1750 + }, 1751 + }, 512 1752 "ToolsOzoneCommunicationDefs": { 513 1753 "lexicon": 1, 514 1754 "id": "tools.ozone.communication.defs", ··· 1109 2349 "tools.ozone.team.defs#roleModerator", 1110 2350 "tools.ozone.team.defs#roleTriage", 1111 2351 "tools.ozone.team.defs#roleAdmin", 2352 + "tools.ozone.team.defs#roleVerifier", 1112 2353 ], 1113 2354 }, 1114 2355 "scope": { ··· 1282 2523 "knownValues": [ 1283 2524 "tools.ozone.team.defs#roleModerator", 1284 2525 "tools.ozone.team.defs#roleTriage", 2526 + "tools.ozone.team.defs#roleVerifier", 1285 2527 "tools.ozone.team.defs#roleAdmin", 1286 2528 ], 1287 2529 }, ··· 1350 2592 }, 1351 2593 }, 1352 2594 }, 2595 + "ToolsOzoneModerationCancelScheduledActions": { 2596 + "lexicon": 1, 2597 + "id": "tools.ozone.moderation.cancelScheduledActions", 2598 + "defs": { 2599 + "main": { 2600 + "type": "procedure", 2601 + "description": 2602 + "Cancel all pending scheduled moderation actions for specified subjects", 2603 + "input": { 2604 + "encoding": "application/json", 2605 + "schema": { 2606 + "type": "object", 2607 + "required": [ 2608 + "subjects", 2609 + ], 2610 + "properties": { 2611 + "subjects": { 2612 + "type": "array", 2613 + "maxLength": 100, 2614 + "items": { 2615 + "type": "string", 2616 + "format": "did", 2617 + }, 2618 + "description": 2619 + "Array of DID subjects to cancel scheduled actions for", 2620 + }, 2621 + "comment": { 2622 + "type": "string", 2623 + "description": 2624 + "Optional comment describing the reason for cancellation", 2625 + }, 2626 + }, 2627 + }, 2628 + }, 2629 + "output": { 2630 + "encoding": "application/json", 2631 + "schema": { 2632 + "type": "ref", 2633 + "ref": 2634 + "lex:tools.ozone.moderation.cancelScheduledActions#cancellationResults", 2635 + }, 2636 + }, 2637 + }, 2638 + "cancellationResults": { 2639 + "type": "object", 2640 + "required": [ 2641 + "succeeded", 2642 + "failed", 2643 + ], 2644 + "properties": { 2645 + "succeeded": { 2646 + "type": "array", 2647 + "items": { 2648 + "type": "string", 2649 + "format": "did", 2650 + }, 2651 + "description": 2652 + "DIDs for which all pending scheduled actions were successfully cancelled", 2653 + }, 2654 + "failed": { 2655 + "type": "array", 2656 + "items": { 2657 + "type": "ref", 2658 + "ref": 2659 + "lex:tools.ozone.moderation.cancelScheduledActions#failedCancellation", 2660 + }, 2661 + "description": 2662 + "DIDs for which cancellation failed with error details", 2663 + }, 2664 + }, 2665 + }, 2666 + "failedCancellation": { 2667 + "type": "object", 2668 + "required": [ 2669 + "did", 2670 + "error", 2671 + ], 2672 + "properties": { 2673 + "did": { 2674 + "type": "string", 2675 + "format": "did", 2676 + }, 2677 + "error": { 2678 + "type": "string", 2679 + }, 2680 + "errorCode": { 2681 + "type": "string", 2682 + }, 2683 + }, 2684 + }, 2685 + }, 2686 + }, 2687 + "ToolsOzoneModerationListScheduledActions": { 2688 + "lexicon": 1, 2689 + "id": "tools.ozone.moderation.listScheduledActions", 2690 + "defs": { 2691 + "main": { 2692 + "type": "procedure", 2693 + "description": 2694 + "List scheduled moderation actions with optional filtering", 2695 + "input": { 2696 + "encoding": "application/json", 2697 + "schema": { 2698 + "type": "object", 2699 + "required": [ 2700 + "statuses", 2701 + ], 2702 + "properties": { 2703 + "startsAfter": { 2704 + "type": "string", 2705 + "format": "datetime", 2706 + "description": 2707 + "Filter actions scheduled to execute after this time", 2708 + }, 2709 + "endsBefore": { 2710 + "type": "string", 2711 + "format": "datetime", 2712 + "description": 2713 + "Filter actions scheduled to execute before this time", 2714 + }, 2715 + "subjects": { 2716 + "type": "array", 2717 + "maxLength": 100, 2718 + "items": { 2719 + "type": "string", 2720 + "format": "did", 2721 + }, 2722 + "description": "Filter actions for specific DID subjects", 2723 + }, 2724 + "statuses": { 2725 + "type": "array", 2726 + "minLength": 1, 2727 + "items": { 2728 + "type": "string", 2729 + "knownValues": [ 2730 + "pending", 2731 + "executed", 2732 + "cancelled", 2733 + "failed", 2734 + ], 2735 + }, 2736 + "description": "Filter actions by status", 2737 + }, 2738 + "limit": { 2739 + "type": "integer", 2740 + "minimum": 1, 2741 + "maximum": 100, 2742 + "default": 50, 2743 + "description": "Maximum number of results to return", 2744 + }, 2745 + "cursor": { 2746 + "type": "string", 2747 + "description": "Cursor for pagination", 2748 + }, 2749 + }, 2750 + }, 2751 + }, 2752 + "output": { 2753 + "encoding": "application/json", 2754 + "schema": { 2755 + "type": "object", 2756 + "required": [ 2757 + "actions", 2758 + ], 2759 + "properties": { 2760 + "actions": { 2761 + "type": "array", 2762 + "items": { 2763 + "type": "ref", 2764 + "ref": "lex:tools.ozone.moderation.defs#scheduledActionView", 2765 + }, 2766 + }, 2767 + "cursor": { 2768 + "type": "string", 2769 + "description": "Cursor for next page of results", 2770 + }, 2771 + }, 2772 + }, 2773 + }, 2774 + }, 2775 + }, 2776 + }, 1353 2777 "ToolsOzoneModerationQueryStatuses": { 1354 2778 "lexicon": 1, 1355 2779 "id": "tools.ozone.moderation.queryStatuses", ··· 1456 2880 "type": "string", 1457 2881 "description": 1458 2882 "Specify when fetching subjects in a certain state", 2883 + "knownValues": [ 2884 + "tools.ozone.moderation.defs#reviewOpen", 2885 + "tools.ozone.moderation.defs#reviewClosed", 2886 + "tools.ozone.moderation.defs#reviewEscalated", 2887 + "tools.ozone.moderation.defs#reviewNone", 2888 + ], 1459 2889 }, 1460 2890 "ignoreSubjects": { 1461 2891 "type": "array", ··· 1562 2992 "description": 1563 2993 "If specified, only subjects that have priority score value above the given value will be returned.", 1564 2994 }, 2995 + "minStrikeCount": { 2996 + "type": "integer", 2997 + "minimum": 1, 2998 + "description": 2999 + "If specified, only subjects that belong to an account that has at least this many active strikes will be returned.", 3000 + }, 3001 + "ageAssuranceState": { 3002 + "type": "string", 3003 + "description": 3004 + "If specified, only subjects with the given age assurance state will be returned.", 3005 + "knownValues": [ 3006 + "pending", 3007 + "assured", 3008 + "unknown", 3009 + "reset", 3010 + "blocked", 3011 + ], 3012 + }, 1565 3013 }, 1566 3014 }, 1567 3015 "output": { ··· 1662 3110 "lex:tools.ozone.moderation.defs#identityEvent", 1663 3111 "lex:tools.ozone.moderation.defs#recordEvent", 1664 3112 "lex:tools.ozone.moderation.defs#modEventPriorityScore", 3113 + "lex:tools.ozone.moderation.defs#ageAssuranceEvent", 3114 + "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent", 3115 + "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent", 3116 + "lex:tools.ozone.moderation.defs#scheduleTakedownEvent", 3117 + "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent", 1665 3118 ], 1666 3119 }, 1667 3120 "subject": { ··· 1691 3144 }, 1692 3145 "subjectHandle": { 1693 3146 "type": "string", 3147 + }, 3148 + "modTool": { 3149 + "type": "ref", 3150 + "ref": "lex:tools.ozone.moderation.defs#modTool", 1694 3151 }, 1695 3152 }, 1696 3153 }, ··· 1730 3187 "lex:tools.ozone.moderation.defs#identityEvent", 1731 3188 "lex:tools.ozone.moderation.defs#recordEvent", 1732 3189 "lex:tools.ozone.moderation.defs#modEventPriorityScore", 3190 + "lex:tools.ozone.moderation.defs#ageAssuranceEvent", 3191 + "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent", 3192 + "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent", 3193 + "lex:tools.ozone.moderation.defs#scheduleTakedownEvent", 3194 + "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent", 1733 3195 ], 1734 3196 }, 1735 3197 "subject": { ··· 1756 3218 "type": "string", 1757 3219 "format": "datetime", 1758 3220 }, 3221 + "modTool": { 3222 + "type": "ref", 3223 + "ref": "lex:tools.ozone.moderation.defs#modTool", 3224 + }, 1759 3225 }, 1760 3226 }, 1761 3227 "subjectStatusView": { ··· 1776 3242 "refs": [ 1777 3243 "lex:com.atproto.admin.defs#repoRef", 1778 3244 "lex:com.atproto.repo.strongRef", 3245 + "lex:chat.bsky.convo.defs#messageRef", 1779 3246 ], 1780 3247 }, 1781 3248 "hosting": { ··· 1876 3343 "Statistics related to the record subjects authored by the subject's account", 1877 3344 "type": "ref", 1878 3345 "ref": "lex:tools.ozone.moderation.defs#recordsStats", 3346 + }, 3347 + "accountStrike": { 3348 + "description": 3349 + "Strike information for the account (account-level only)", 3350 + "type": "ref", 3351 + "ref": "lex:tools.ozone.moderation.defs#accountStrike", 3352 + }, 3353 + "ageAssuranceState": { 3354 + "type": "string", 3355 + "description": "Current age assurance state of the subject.", 3356 + "knownValues": [ 3357 + "pending", 3358 + "assured", 3359 + "unknown", 3360 + "reset", 3361 + "blocked", 3362 + ], 3363 + }, 3364 + "ageAssuranceUpdatedBy": { 3365 + "type": "string", 3366 + "description": 3367 + "Whether or not the last successful update to age assurance was made by the user or admin.", 3368 + "knownValues": [ 3369 + "admin", 3370 + "user", 3371 + ], 3372 + }, 3373 + }, 3374 + }, 3375 + "subjectView": { 3376 + "description": 3377 + "Detailed view of a subject. For record subjects, the author's repo and profile will be returned.", 3378 + "type": "object", 3379 + "required": [ 3380 + "type", 3381 + "subject", 3382 + ], 3383 + "properties": { 3384 + "type": { 3385 + "type": "ref", 3386 + "ref": "lex:com.atproto.moderation.defs#subjectType", 3387 + }, 3388 + "subject": { 3389 + "type": "string", 3390 + }, 3391 + "status": { 3392 + "type": "ref", 3393 + "ref": "lex:tools.ozone.moderation.defs#subjectStatusView", 3394 + }, 3395 + "repo": { 3396 + "type": "ref", 3397 + "ref": "lex:tools.ozone.moderation.defs#repoViewDetail", 3398 + }, 3399 + "profile": { 3400 + "type": "union", 3401 + "refs": [], 3402 + }, 3403 + "record": { 3404 + "type": "ref", 3405 + "ref": "lex:tools.ozone.moderation.defs#recordViewDetail", 1879 3406 }, 1880 3407 }, 1881 3408 }, ··· 1947 3474 }, 1948 3475 }, 1949 3476 }, 3477 + "accountStrike": { 3478 + "description": "Strike information for an account", 3479 + "type": "object", 3480 + "properties": { 3481 + "activeStrikeCount": { 3482 + "description": 3483 + "Current number of active strikes (excluding expired strikes)", 3484 + "type": "integer", 3485 + }, 3486 + "totalStrikeCount": { 3487 + "description": 3488 + "Total number of strikes ever received (including expired strikes)", 3489 + "type": "integer", 3490 + }, 3491 + "firstStrikeAt": { 3492 + "description": "Timestamp of the first strike received", 3493 + "type": "string", 3494 + "format": "datetime", 3495 + }, 3496 + "lastStrikeAt": { 3497 + "description": "Timestamp of the most recent strike received", 3498 + "type": "string", 3499 + "format": "datetime", 3500 + }, 3501 + }, 3502 + }, 1950 3503 "subjectReviewState": { 1951 3504 "type": "string", 1952 3505 "knownValues": [ 1953 - "lex:tools.ozone.moderation.defs#reviewOpen", 1954 - "lex:tools.ozone.moderation.defs#reviewEscalated", 1955 - "lex:tools.ozone.moderation.defs#reviewClosed", 1956 - "lex:tools.ozone.moderation.defs#reviewNone", 3506 + "tools.ozone.moderation.defs#reviewOpen", 3507 + "tools.ozone.moderation.defs#reviewEscalated", 3508 + "tools.ozone.moderation.defs#reviewClosed", 3509 + "tools.ozone.moderation.defs#reviewNone", 1957 3510 ], 1958 3511 }, 1959 3512 "reviewOpen": { ··· 2002 3555 "description": 2003 3556 "Names/Keywords of the policies that drove the decision.", 2004 3557 }, 3558 + "severityLevel": { 3559 + "type": "string", 3560 + "description": 3561 + "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).", 3562 + }, 3563 + "targetServices": { 3564 + "type": "array", 3565 + "items": { 3566 + "type": "string", 3567 + "knownValues": [ 3568 + "appview", 3569 + "pds", 3570 + ], 3571 + }, 3572 + "description": 3573 + "List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services.", 3574 + }, 3575 + "strikeCount": { 3576 + "type": "integer", 3577 + "description": 3578 + "Number of strikes to assign to the user for this violation.", 3579 + }, 3580 + "strikeExpiresAt": { 3581 + "type": "string", 3582 + "format": "datetime", 3583 + "description": 3584 + "When the strike should expire. If not provided, the strike never expires.", 3585 + }, 2005 3586 }, 2006 3587 }, 2007 3588 "modEventReverseTakedown": { ··· 2012 3593 "type": "string", 2013 3594 "description": "Describe reasoning behind the reversal.", 2014 3595 }, 3596 + "policies": { 3597 + "type": "array", 3598 + "maxLength": 5, 3599 + "items": { 3600 + "type": "string", 3601 + }, 3602 + "description": 3603 + "Names/Keywords of the policy infraction for which takedown is being reversed.", 3604 + }, 3605 + "severityLevel": { 3606 + "type": "string", 3607 + "description": 3608 + "Severity level of the violation. Usually set from the last policy infraction's severity.", 3609 + }, 3610 + "strikeCount": { 3611 + "type": "integer", 3612 + "description": 3613 + "Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity.", 3614 + }, 2015 3615 }, 2016 3616 }, 2017 3617 "modEventResolveAppeal": { ··· 2107 3707 }, 2108 3708 }, 2109 3709 }, 3710 + "ageAssuranceEvent": { 3711 + "type": "object", 3712 + "description": 3713 + "Age assurance info coming directly from users. Only works on DID subjects.", 3714 + "required": [ 3715 + "createdAt", 3716 + "status", 3717 + "attemptId", 3718 + ], 3719 + "properties": { 3720 + "createdAt": { 3721 + "type": "string", 3722 + "format": "datetime", 3723 + "description": "The date and time of this write operation.", 3724 + }, 3725 + "attemptId": { 3726 + "type": "string", 3727 + "description": 3728 + "The unique identifier for this instance of the age assurance flow, in UUID format.", 3729 + }, 3730 + "status": { 3731 + "type": "string", 3732 + "description": "The status of the Age Assurance process.", 3733 + "knownValues": [ 3734 + "unknown", 3735 + "pending", 3736 + "assured", 3737 + ], 3738 + }, 3739 + "access": { 3740 + "type": "ref", 3741 + "ref": "lex:app.bsky.ageassurance.defs#access", 3742 + }, 3743 + "countryCode": { 3744 + "type": "string", 3745 + "description": 3746 + "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow.", 3747 + }, 3748 + "regionCode": { 3749 + "type": "string", 3750 + "description": 3751 + "The ISO 3166-2 region code provided when beginning the Age Assurance flow.", 3752 + }, 3753 + "initIp": { 3754 + "type": "string", 3755 + "description": "The IP address used when initiating the AA flow.", 3756 + }, 3757 + "initUa": { 3758 + "type": "string", 3759 + "description": "The user agent used when initiating the AA flow.", 3760 + }, 3761 + "completeIp": { 3762 + "type": "string", 3763 + "description": "The IP address used when completing the AA flow.", 3764 + }, 3765 + "completeUa": { 3766 + "type": "string", 3767 + "description": "The user agent used when completing the AA flow.", 3768 + }, 3769 + }, 3770 + }, 3771 + "ageAssuranceOverrideEvent": { 3772 + "type": "object", 3773 + "description": 3774 + "Age assurance status override by moderators. Only works on DID subjects.", 3775 + "required": [ 3776 + "comment", 3777 + "status", 3778 + ], 3779 + "properties": { 3780 + "status": { 3781 + "type": "string", 3782 + "description": 3783 + "The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state.", 3784 + "knownValues": [ 3785 + "assured", 3786 + "reset", 3787 + "blocked", 3788 + ], 3789 + }, 3790 + "access": { 3791 + "type": "ref", 3792 + "ref": "lex:app.bsky.ageassurance.defs#access", 3793 + }, 3794 + "comment": { 3795 + "type": "string", 3796 + "description": "Comment describing the reason for the override.", 3797 + }, 3798 + }, 3799 + }, 3800 + "revokeAccountCredentialsEvent": { 3801 + "type": "object", 3802 + "description": 3803 + "Account credentials revocation by moderators. Only works on DID subjects.", 3804 + "required": [ 3805 + "comment", 3806 + ], 3807 + "properties": { 3808 + "comment": { 3809 + "type": "string", 3810 + "description": "Comment describing the reason for the revocation.", 3811 + }, 3812 + }, 3813 + }, 2110 3814 "modEventAcknowledge": { 2111 3815 "type": "object", 2112 3816 "properties": { ··· 2198 3902 "type": "string", 2199 3903 "description": "Additional comment about the outgoing comm.", 2200 3904 }, 3905 + "policies": { 3906 + "type": "array", 3907 + "maxLength": 5, 3908 + "items": { 3909 + "type": "string", 3910 + }, 3911 + "description": 3912 + "Names/Keywords of the policies that necessitated the email.", 3913 + }, 3914 + "severityLevel": { 3915 + "type": "string", 3916 + "description": 3917 + "Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense", 3918 + }, 3919 + "strikeCount": { 3920 + "type": "integer", 3921 + "description": 3922 + "Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense.", 3923 + }, 3924 + "strikeExpiresAt": { 3925 + "type": "string", 3926 + "format": "datetime", 3927 + "description": 3928 + "When the strike should expire. If not provided, the strike never expires.", 3929 + }, 3930 + "isDelivered": { 3931 + "type": "boolean", 3932 + "description": 3933 + "Indicates whether the email was successfully delivered to the user's inbox.", 3934 + }, 2201 3935 }, 2202 3936 }, 2203 3937 "modEventDivert": { ··· 2329 4063 "timestamp": { 2330 4064 "type": "string", 2331 4065 "format": "datetime", 4066 + }, 4067 + }, 4068 + }, 4069 + "scheduleTakedownEvent": { 4070 + "type": "object", 4071 + "description": "Logs a scheduled takedown action for an account.", 4072 + "properties": { 4073 + "comment": { 4074 + "type": "string", 4075 + }, 4076 + "executeAt": { 4077 + "type": "string", 4078 + "format": "datetime", 4079 + }, 4080 + "executeAfter": { 4081 + "type": "string", 4082 + "format": "datetime", 4083 + }, 4084 + "executeUntil": { 4085 + "type": "string", 4086 + "format": "datetime", 4087 + }, 4088 + }, 4089 + }, 4090 + "cancelScheduledTakedownEvent": { 4091 + "type": "object", 4092 + "description": 4093 + "Logs cancellation of a scheduled takedown action for an account.", 4094 + "properties": { 4095 + "comment": { 4096 + "type": "string", 2332 4097 }, 2333 4098 }, 2334 4099 }, ··· 2796 4561 }, 2797 4562 }, 2798 4563 }, 4564 + "modTool": { 4565 + "type": "object", 4566 + "description": 4567 + "Moderation tool information for tracing the source of the action", 4568 + "required": [ 4569 + "name", 4570 + ], 4571 + "properties": { 4572 + "name": { 4573 + "type": "string", 4574 + "description": 4575 + "Name/identifier of the source (e.g., 'automod', 'ozone/workspace')", 4576 + }, 4577 + "meta": { 4578 + "type": "unknown", 4579 + "description": "Additional arbitrary metadata about the source", 4580 + }, 4581 + }, 4582 + }, 4583 + "timelineEventPlcCreate": { 4584 + "type": "token", 4585 + "description": 4586 + "Moderation event timeline event for a PLC create operation", 4587 + }, 4588 + "timelineEventPlcOperation": { 4589 + "type": "token", 4590 + "description": 4591 + "Moderation event timeline event for generic PLC operation", 4592 + }, 4593 + "timelineEventPlcTombstone": { 4594 + "type": "token", 4595 + "description": 4596 + "Moderation event timeline event for a PLC tombstone operation", 4597 + }, 4598 + "scheduledActionView": { 4599 + "type": "object", 4600 + "description": "View of a scheduled moderation action", 4601 + "required": [ 4602 + "id", 4603 + "action", 4604 + "did", 4605 + "createdBy", 4606 + "createdAt", 4607 + "status", 4608 + ], 4609 + "properties": { 4610 + "id": { 4611 + "type": "integer", 4612 + "description": "Auto-incrementing row ID", 4613 + }, 4614 + "action": { 4615 + "type": "string", 4616 + "knownValues": [ 4617 + "takedown", 4618 + ], 4619 + "description": "Type of action to be executed", 4620 + }, 4621 + "eventData": { 4622 + "type": "unknown", 4623 + "description": 4624 + "Serialized event object that will be propagated to the event when performed", 4625 + }, 4626 + "did": { 4627 + "type": "string", 4628 + "format": "did", 4629 + "description": "Subject DID for the action", 4630 + }, 4631 + "executeAt": { 4632 + "type": "string", 4633 + "format": "datetime", 4634 + "description": "Exact time to execute the action", 4635 + }, 4636 + "executeAfter": { 4637 + "type": "string", 4638 + "format": "datetime", 4639 + "description": 4640 + "Earliest time to execute the action (for randomized scheduling)", 4641 + }, 4642 + "executeUntil": { 4643 + "type": "string", 4644 + "format": "datetime", 4645 + "description": 4646 + "Latest time to execute the action (for randomized scheduling)", 4647 + }, 4648 + "randomizeExecution": { 4649 + "type": "boolean", 4650 + "description": 4651 + "Whether execution time should be randomized within the specified range", 4652 + }, 4653 + "createdBy": { 4654 + "type": "string", 4655 + "format": "did", 4656 + "description": "DID of the user who created this scheduled action", 4657 + }, 4658 + "createdAt": { 4659 + "type": "string", 4660 + "format": "datetime", 4661 + "description": "When the scheduled action was created", 4662 + }, 4663 + "updatedAt": { 4664 + "type": "string", 4665 + "format": "datetime", 4666 + "description": "When the scheduled action was last updated", 4667 + }, 4668 + "status": { 4669 + "type": "string", 4670 + "knownValues": [ 4671 + "pending", 4672 + "executed", 4673 + "cancelled", 4674 + "failed", 4675 + ], 4676 + "description": "Current status of the scheduled action", 4677 + }, 4678 + "lastExecutedAt": { 4679 + "type": "string", 4680 + "format": "datetime", 4681 + "description": "When the action was last attempted to be executed", 4682 + }, 4683 + "lastFailureReason": { 4684 + "type": "string", 4685 + "description": "Reason for the last execution failure", 4686 + }, 4687 + "executionEventId": { 4688 + "type": "integer", 4689 + "description": 4690 + "ID of the moderation event created when action was successfully executed", 4691 + }, 4692 + }, 4693 + }, 4694 + }, 4695 + }, 4696 + "ToolsOzoneModerationGetSubjects": { 4697 + "lexicon": 1, 4698 + "id": "tools.ozone.moderation.getSubjects", 4699 + "defs": { 4700 + "main": { 4701 + "type": "query", 4702 + "description": "Get details about subjects.", 4703 + "parameters": { 4704 + "type": "params", 4705 + "required": [ 4706 + "subjects", 4707 + ], 4708 + "properties": { 4709 + "subjects": { 4710 + "type": "array", 4711 + "maxLength": 100, 4712 + "minLength": 1, 4713 + "items": { 4714 + "type": "string", 4715 + }, 4716 + }, 4717 + }, 4718 + }, 4719 + "output": { 4720 + "encoding": "application/json", 4721 + "schema": { 4722 + "type": "object", 4723 + "required": [ 4724 + "subjects", 4725 + ], 4726 + "properties": { 4727 + "subjects": { 4728 + "type": "array", 4729 + "items": { 4730 + "type": "ref", 4731 + "ref": "lex:tools.ozone.moderation.defs#subjectView", 4732 + }, 4733 + }, 4734 + }, 4735 + }, 4736 + }, 4737 + }, 2799 4738 }, 2800 4739 }, 2801 4740 "ToolsOzoneModerationGetRecords": { ··· 2845 4784 }, 2846 4785 }, 2847 4786 }, 4787 + "ToolsOzoneModerationScheduleAction": { 4788 + "lexicon": 1, 4789 + "id": "tools.ozone.moderation.scheduleAction", 4790 + "defs": { 4791 + "main": { 4792 + "type": "procedure", 4793 + "description": 4794 + "Schedule a moderation action to be executed at a future time", 4795 + "input": { 4796 + "encoding": "application/json", 4797 + "schema": { 4798 + "type": "object", 4799 + "required": [ 4800 + "action", 4801 + "subjects", 4802 + "createdBy", 4803 + "scheduling", 4804 + ], 4805 + "properties": { 4806 + "action": { 4807 + "type": "union", 4808 + "refs": [ 4809 + "lex:tools.ozone.moderation.scheduleAction#takedown", 4810 + ], 4811 + }, 4812 + "subjects": { 4813 + "type": "array", 4814 + "maxLength": 100, 4815 + "items": { 4816 + "type": "string", 4817 + "format": "did", 4818 + }, 4819 + "description": 4820 + "Array of DID subjects to schedule the action for", 4821 + }, 4822 + "createdBy": { 4823 + "type": "string", 4824 + "format": "did", 4825 + }, 4826 + "scheduling": { 4827 + "type": "ref", 4828 + "ref": 4829 + "lex:tools.ozone.moderation.scheduleAction#schedulingConfig", 4830 + }, 4831 + "modTool": { 4832 + "type": "ref", 4833 + "ref": "lex:tools.ozone.moderation.defs#modTool", 4834 + "description": 4835 + "This will be propagated to the moderation event when it is applied", 4836 + }, 4837 + }, 4838 + }, 4839 + }, 4840 + "output": { 4841 + "encoding": "application/json", 4842 + "schema": { 4843 + "type": "ref", 4844 + "ref": 4845 + "lex:tools.ozone.moderation.scheduleAction#scheduledActionResults", 4846 + }, 4847 + }, 4848 + }, 4849 + "takedown": { 4850 + "type": "object", 4851 + "description": "Schedule a takedown action", 4852 + "properties": { 4853 + "comment": { 4854 + "type": "string", 4855 + }, 4856 + "durationInHours": { 4857 + "type": "integer", 4858 + "description": 4859 + "Indicates how long the takedown should be in effect before automatically expiring.", 4860 + }, 4861 + "acknowledgeAccountSubjects": { 4862 + "type": "boolean", 4863 + "description": 4864 + "If true, all other reports on content authored by this account will be resolved (acknowledged).", 4865 + }, 4866 + "policies": { 4867 + "type": "array", 4868 + "maxLength": 5, 4869 + "items": { 4870 + "type": "string", 4871 + }, 4872 + "description": 4873 + "Names/Keywords of the policies that drove the decision.", 4874 + }, 4875 + "severityLevel": { 4876 + "type": "string", 4877 + "description": 4878 + "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).", 4879 + }, 4880 + "strikeCount": { 4881 + "type": "integer", 4882 + "description": 4883 + "Number of strikes to assign to the user when takedown is applied.", 4884 + }, 4885 + "strikeExpiresAt": { 4886 + "type": "string", 4887 + "format": "datetime", 4888 + "description": 4889 + "When the strike should expire. If not provided, the strike never expires.", 4890 + }, 4891 + "emailContent": { 4892 + "type": "string", 4893 + "description": 4894 + "Email content to be sent to the user upon takedown.", 4895 + }, 4896 + "emailSubject": { 4897 + "type": "string", 4898 + "description": 4899 + "Subject of the email to be sent to the user upon takedown.", 4900 + }, 4901 + }, 4902 + }, 4903 + "schedulingConfig": { 4904 + "type": "object", 4905 + "description": "Configuration for when the action should be executed", 4906 + "properties": { 4907 + "executeAt": { 4908 + "type": "string", 4909 + "format": "datetime", 4910 + "description": "Exact time to execute the action", 4911 + }, 4912 + "executeAfter": { 4913 + "type": "string", 4914 + "format": "datetime", 4915 + "description": 4916 + "Earliest time to execute the action (for randomized scheduling)", 4917 + }, 4918 + "executeUntil": { 4919 + "type": "string", 4920 + "format": "datetime", 4921 + "description": 4922 + "Latest time to execute the action (for randomized scheduling)", 4923 + }, 4924 + }, 4925 + }, 4926 + "scheduledActionResults": { 4927 + "type": "object", 4928 + "required": [ 4929 + "succeeded", 4930 + "failed", 4931 + ], 4932 + "properties": { 4933 + "succeeded": { 4934 + "type": "array", 4935 + "items": { 4936 + "type": "string", 4937 + "format": "did", 4938 + }, 4939 + }, 4940 + "failed": { 4941 + "type": "array", 4942 + "items": { 4943 + "type": "ref", 4944 + "ref": 4945 + "lex:tools.ozone.moderation.scheduleAction#failedScheduling", 4946 + }, 4947 + }, 4948 + }, 4949 + }, 4950 + "failedScheduling": { 4951 + "type": "object", 4952 + "required": [ 4953 + "subject", 4954 + "error", 4955 + ], 4956 + "properties": { 4957 + "subject": { 4958 + "type": "string", 4959 + "format": "did", 4960 + }, 4961 + "error": { 4962 + "type": "string", 4963 + }, 4964 + "errorCode": { 4965 + "type": "string", 4966 + }, 4967 + }, 4968 + }, 4969 + }, 4970 + }, 2848 4971 "ToolsOzoneModerationGetEvent": { 2849 4972 "lexicon": 1, 2850 4973 "id": "tools.ozone.moderation.getEvent", ··· 3005 5128 "If specified, only events where the action policies match any of the given policies are returned", 3006 5129 }, 3007 5130 }, 5131 + "modTool": { 5132 + "type": "array", 5133 + "items": { 5134 + "type": "string", 5135 + }, 5136 + "description": 5137 + "If specified, only events where the modTool name matches any of the given values are returned", 5138 + }, 5139 + "batchId": { 5140 + "type": "string", 5141 + "description": 5142 + "If specified, only events where the batchId matches the given value are returned", 5143 + }, 5144 + "ageAssuranceState": { 5145 + "type": "string", 5146 + "description": 5147 + "If specified, only events where the age assurance state matches the given value are returned", 5148 + "knownValues": [ 5149 + "pending", 5150 + "assured", 5151 + "unknown", 5152 + "reset", 5153 + "blocked", 5154 + ], 5155 + }, 5156 + "withStrike": { 5157 + "type": "boolean", 5158 + "description": 5159 + "If specified, only events where strikeCount value is set are returned.", 5160 + }, 3008 5161 "cursor": { 3009 5162 "type": "string", 3010 5163 }, ··· 3111 5264 "lex:tools.ozone.moderation.defs#identityEvent", 3112 5265 "lex:tools.ozone.moderation.defs#recordEvent", 3113 5266 "lex:tools.ozone.moderation.defs#modEventPriorityScore", 5267 + "lex:tools.ozone.moderation.defs#ageAssuranceEvent", 5268 + "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent", 5269 + "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent", 5270 + "lex:tools.ozone.moderation.defs#scheduleTakedownEvent", 5271 + "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent", 3114 5272 ], 3115 5273 }, 3116 5274 "subject": { ··· 3131 5289 "type": "string", 3132 5290 "format": "did", 3133 5291 }, 5292 + "modTool": { 5293 + "type": "ref", 5294 + "ref": "lex:tools.ozone.moderation.defs#modTool", 5295 + }, 5296 + "externalId": { 5297 + "type": "string", 5298 + "description": 5299 + "An optional external ID for the event, used to deduplicate events from external systems. Fails when an event of same type with the same external ID exists for the same subject.", 5300 + }, 3134 5301 }, 3135 5302 }, 3136 5303 }, ··· 3144 5311 "errors": [ 3145 5312 { 3146 5313 "name": "SubjectHasAction", 5314 + }, 5315 + { 5316 + "name": "DuplicateExternalId", 5317 + "description": 5318 + "An event with the same external ID already exists for the subject.", 3147 5319 }, 3148 5320 ], 3149 5321 }, ··· 3201 5373 }, 3202 5374 }, 3203 5375 }, 5376 + "ToolsOzoneModerationGetAccountTimeline": { 5377 + "lexicon": 1, 5378 + "id": "tools.ozone.moderation.getAccountTimeline", 5379 + "defs": { 5380 + "main": { 5381 + "type": "query", 5382 + "description": 5383 + "Get timeline of all available events of an account. This includes moderation events, account history and did history.", 5384 + "parameters": { 5385 + "type": "params", 5386 + "required": [ 5387 + "did", 5388 + ], 5389 + "properties": { 5390 + "did": { 5391 + "type": "string", 5392 + "format": "did", 5393 + }, 5394 + }, 5395 + }, 5396 + "output": { 5397 + "encoding": "application/json", 5398 + "schema": { 5399 + "type": "object", 5400 + "required": [ 5401 + "timeline", 5402 + ], 5403 + "properties": { 5404 + "timeline": { 5405 + "type": "array", 5406 + "items": { 5407 + "type": "ref", 5408 + "ref": 5409 + "lex:tools.ozone.moderation.getAccountTimeline#timelineItem", 5410 + }, 5411 + }, 5412 + }, 5413 + }, 5414 + }, 5415 + "errors": [ 5416 + { 5417 + "name": "RepoNotFound", 5418 + }, 5419 + ], 5420 + }, 5421 + "timelineItem": { 5422 + "type": "object", 5423 + "required": [ 5424 + "day", 5425 + "summary", 5426 + ], 5427 + "properties": { 5428 + "day": { 5429 + "type": "string", 5430 + }, 5431 + "summary": { 5432 + "type": "array", 5433 + "items": { 5434 + "type": "ref", 5435 + "ref": 5436 + "lex:tools.ozone.moderation.getAccountTimeline#timelineItemSummary", 5437 + }, 5438 + }, 5439 + }, 5440 + }, 5441 + "timelineItemSummary": { 5442 + "type": "object", 5443 + "required": [ 5444 + "eventSubjectType", 5445 + "eventType", 5446 + "count", 5447 + ], 5448 + "properties": { 5449 + "eventSubjectType": { 5450 + "type": "string", 5451 + "knownValues": [ 5452 + "account", 5453 + "record", 5454 + "chat", 5455 + ], 5456 + }, 5457 + "eventType": { 5458 + "type": "string", 5459 + "knownValues": [ 5460 + "tools.ozone.moderation.defs#modEventTakedown", 5461 + "tools.ozone.moderation.defs#modEventReverseTakedown", 5462 + "tools.ozone.moderation.defs#modEventComment", 5463 + "tools.ozone.moderation.defs#modEventReport", 5464 + "tools.ozone.moderation.defs#modEventLabel", 5465 + "tools.ozone.moderation.defs#modEventAcknowledge", 5466 + "tools.ozone.moderation.defs#modEventEscalate", 5467 + "tools.ozone.moderation.defs#modEventMute", 5468 + "tools.ozone.moderation.defs#modEventUnmute", 5469 + "tools.ozone.moderation.defs#modEventMuteReporter", 5470 + "tools.ozone.moderation.defs#modEventUnmuteReporter", 5471 + "tools.ozone.moderation.defs#modEventEmail", 5472 + "tools.ozone.moderation.defs#modEventResolveAppeal", 5473 + "tools.ozone.moderation.defs#modEventDivert", 5474 + "tools.ozone.moderation.defs#modEventTag", 5475 + "tools.ozone.moderation.defs#accountEvent", 5476 + "tools.ozone.moderation.defs#identityEvent", 5477 + "tools.ozone.moderation.defs#recordEvent", 5478 + "tools.ozone.moderation.defs#modEventPriorityScore", 5479 + "tools.ozone.moderation.defs#revokeAccountCredentialsEvent", 5480 + "tools.ozone.moderation.defs#ageAssuranceEvent", 5481 + "tools.ozone.moderation.defs#ageAssuranceOverrideEvent", 5482 + "tools.ozone.moderation.defs#timelineEventPlcCreate", 5483 + "tools.ozone.moderation.defs#timelineEventPlcOperation", 5484 + "tools.ozone.moderation.defs#timelineEventPlcTombstone", 5485 + "tools.ozone.hosting.getAccountHistory#accountCreated", 5486 + "tools.ozone.hosting.getAccountHistory#emailConfirmed", 5487 + "tools.ozone.hosting.getAccountHistory#passwordUpdated", 5488 + "tools.ozone.hosting.getAccountHistory#handleUpdated", 5489 + "tools.ozone.moderation.defs#scheduleTakedownEvent", 5490 + "tools.ozone.moderation.defs#cancelScheduledTakedownEvent", 5491 + ], 5492 + }, 5493 + "count": { 5494 + "type": "integer", 5495 + }, 5496 + }, 5497 + }, 5498 + }, 5499 + }, 3204 5500 "ToolsOzoneModerationGetRepos": { 3205 5501 "lexicon": 1, 3206 5502 "id": "tools.ozone.moderation.getRepos", ··· 3395 5691 }, 3396 5692 }, 3397 5693 }, 5694 + "AppBskyBookmarkDefs": { 5695 + "lexicon": 1, 5696 + "id": "app.bsky.bookmark.defs", 5697 + "defs": { 5698 + "bookmark": { 5699 + "description": "Object used to store bookmark data in stash.", 5700 + "type": "object", 5701 + "required": [ 5702 + "subject", 5703 + ], 5704 + "properties": { 5705 + "subject": { 5706 + "description": 5707 + "A strong ref to the record to be bookmarked. Currently, only `app.bsky.feed.post` records are supported.", 5708 + "type": "ref", 5709 + "ref": "lex:com.atproto.repo.strongRef", 5710 + }, 5711 + }, 5712 + }, 5713 + "bookmarkView": { 5714 + "type": "object", 5715 + "required": [ 5716 + "subject", 5717 + "item", 5718 + ], 5719 + "properties": { 5720 + "subject": { 5721 + "description": "A strong ref to the bookmarked record.", 5722 + "type": "ref", 5723 + "ref": "lex:com.atproto.repo.strongRef", 5724 + }, 5725 + "createdAt": { 5726 + "type": "string", 5727 + "format": "datetime", 5728 + }, 5729 + "item": { 5730 + "type": "union", 5731 + "refs": [ 5732 + "lex:app.bsky.feed.defs#blockedPost", 5733 + "lex:app.bsky.feed.defs#notFoundPost", 5734 + "lex:app.bsky.feed.defs#postView", 5735 + ], 5736 + }, 5737 + }, 5738 + }, 5739 + }, 5740 + }, 5741 + "AppBskyBookmarkDeleteBookmark": { 5742 + "lexicon": 1, 5743 + "id": "app.bsky.bookmark.deleteBookmark", 5744 + "defs": { 5745 + "main": { 5746 + "type": "procedure", 5747 + "description": 5748 + "Deletes a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", 5749 + "input": { 5750 + "encoding": "application/json", 5751 + "schema": { 5752 + "type": "object", 5753 + "required": [ 5754 + "uri", 5755 + ], 5756 + "properties": { 5757 + "uri": { 5758 + "type": "string", 5759 + "format": "at-uri", 5760 + }, 5761 + }, 5762 + }, 5763 + }, 5764 + "errors": [ 5765 + { 5766 + "name": "UnsupportedCollection", 5767 + "description": 5768 + "The URI to be bookmarked is for an unsupported collection.", 5769 + }, 5770 + ], 5771 + }, 5772 + }, 5773 + }, 5774 + "AppBskyBookmarkGetBookmarks": { 5775 + "lexicon": 1, 5776 + "id": "app.bsky.bookmark.getBookmarks", 5777 + "defs": { 5778 + "main": { 5779 + "type": "query", 5780 + "description": 5781 + "Gets views of records bookmarked by the authenticated user. Requires authentication.", 5782 + "parameters": { 5783 + "type": "params", 5784 + "properties": { 5785 + "limit": { 5786 + "type": "integer", 5787 + "minimum": 1, 5788 + "maximum": 100, 5789 + "default": 50, 5790 + }, 5791 + "cursor": { 5792 + "type": "string", 5793 + }, 5794 + }, 5795 + }, 5796 + "output": { 5797 + "encoding": "application/json", 5798 + "schema": { 5799 + "type": "object", 5800 + "required": [ 5801 + "bookmarks", 5802 + ], 5803 + "properties": { 5804 + "cursor": { 5805 + "type": "string", 5806 + }, 5807 + "bookmarks": { 5808 + "type": "array", 5809 + "items": { 5810 + "type": "ref", 5811 + "ref": "lex:app.bsky.bookmark.defs#bookmarkView", 5812 + }, 5813 + }, 5814 + }, 5815 + }, 5816 + }, 5817 + }, 5818 + }, 5819 + }, 5820 + "AppBskyBookmarkCreateBookmark": { 5821 + "lexicon": 1, 5822 + "id": "app.bsky.bookmark.createBookmark", 5823 + "defs": { 5824 + "main": { 5825 + "type": "procedure", 5826 + "description": 5827 + "Creates a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", 5828 + "input": { 5829 + "encoding": "application/json", 5830 + "schema": { 5831 + "type": "object", 5832 + "required": [ 5833 + "uri", 5834 + "cid", 5835 + ], 5836 + "properties": { 5837 + "uri": { 5838 + "type": "string", 5839 + "format": "at-uri", 5840 + }, 5841 + "cid": { 5842 + "type": "string", 5843 + "format": "cid", 5844 + }, 5845 + }, 5846 + }, 5847 + }, 5848 + "errors": [ 5849 + { 5850 + "name": "UnsupportedCollection", 5851 + "description": 5852 + "The URI to be bookmarked is for an unsupported collection.", 5853 + }, 5854 + ], 5855 + }, 5856 + }, 5857 + }, 3398 5858 "AppBskyEmbedDefs": { 3399 5859 "lexicon": 1, 3400 5860 "id": "app.bsky.embed.defs", ··· 3739 6199 "properties": { 3740 6200 "video": { 3741 6201 "type": "blob", 6202 + "description": 6203 + "The mp4 video file. May be up to 100mb, formerly limited to 50mb.", 3742 6204 "accept": [ 3743 6205 "video/mp4", 3744 6206 ], 3745 - "maxSize": 50000000, 6207 + "maxSize": 100000000, 3746 6208 }, 3747 6209 "captions": { 3748 6210 "type": "array", ··· 3900 6362 }, 3901 6363 }, 3902 6364 }, 6365 + "AppBskyNotificationDefs": { 6366 + "lexicon": 1, 6367 + "id": "app.bsky.notification.defs", 6368 + "defs": { 6369 + "recordDeleted": { 6370 + "type": "object", 6371 + "properties": {}, 6372 + }, 6373 + "chatPreference": { 6374 + "type": "object", 6375 + "required": [ 6376 + "include", 6377 + "push", 6378 + ], 6379 + "properties": { 6380 + "include": { 6381 + "type": "string", 6382 + "knownValues": [ 6383 + "all", 6384 + "accepted", 6385 + ], 6386 + }, 6387 + "push": { 6388 + "type": "boolean", 6389 + }, 6390 + }, 6391 + }, 6392 + "filterablePreference": { 6393 + "type": "object", 6394 + "required": [ 6395 + "include", 6396 + "list", 6397 + "push", 6398 + ], 6399 + "properties": { 6400 + "include": { 6401 + "type": "string", 6402 + "knownValues": [ 6403 + "all", 6404 + "follows", 6405 + ], 6406 + }, 6407 + "list": { 6408 + "type": "boolean", 6409 + }, 6410 + "push": { 6411 + "type": "boolean", 6412 + }, 6413 + }, 6414 + }, 6415 + "preference": { 6416 + "type": "object", 6417 + "required": [ 6418 + "list", 6419 + "push", 6420 + ], 6421 + "properties": { 6422 + "list": { 6423 + "type": "boolean", 6424 + }, 6425 + "push": { 6426 + "type": "boolean", 6427 + }, 6428 + }, 6429 + }, 6430 + "preferences": { 6431 + "type": "object", 6432 + "required": [ 6433 + "chat", 6434 + "follow", 6435 + "like", 6436 + "likeViaRepost", 6437 + "mention", 6438 + "quote", 6439 + "reply", 6440 + "repost", 6441 + "repostViaRepost", 6442 + "starterpackJoined", 6443 + "subscribedPost", 6444 + "unverified", 6445 + "verified", 6446 + ], 6447 + "properties": { 6448 + "chat": { 6449 + "type": "ref", 6450 + "ref": "lex:app.bsky.notification.defs#chatPreference", 6451 + }, 6452 + "follow": { 6453 + "type": "ref", 6454 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6455 + }, 6456 + "like": { 6457 + "type": "ref", 6458 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6459 + }, 6460 + "likeViaRepost": { 6461 + "type": "ref", 6462 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6463 + }, 6464 + "mention": { 6465 + "type": "ref", 6466 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6467 + }, 6468 + "quote": { 6469 + "type": "ref", 6470 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6471 + }, 6472 + "reply": { 6473 + "type": "ref", 6474 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6475 + }, 6476 + "repost": { 6477 + "type": "ref", 6478 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6479 + }, 6480 + "repostViaRepost": { 6481 + "type": "ref", 6482 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6483 + }, 6484 + "starterpackJoined": { 6485 + "type": "ref", 6486 + "ref": "lex:app.bsky.notification.defs#preference", 6487 + }, 6488 + "subscribedPost": { 6489 + "type": "ref", 6490 + "ref": "lex:app.bsky.notification.defs#preference", 6491 + }, 6492 + "unverified": { 6493 + "type": "ref", 6494 + "ref": "lex:app.bsky.notification.defs#preference", 6495 + }, 6496 + "verified": { 6497 + "type": "ref", 6498 + "ref": "lex:app.bsky.notification.defs#preference", 6499 + }, 6500 + }, 6501 + }, 6502 + "activitySubscription": { 6503 + "type": "object", 6504 + "required": [ 6505 + "post", 6506 + "reply", 6507 + ], 6508 + "properties": { 6509 + "post": { 6510 + "type": "boolean", 6511 + }, 6512 + "reply": { 6513 + "type": "boolean", 6514 + }, 6515 + }, 6516 + }, 6517 + "subjectActivitySubscription": { 6518 + "description": 6519 + "Object used to store activity subscription data in stash.", 6520 + "type": "object", 6521 + "required": [ 6522 + "subject", 6523 + "activitySubscription", 6524 + ], 6525 + "properties": { 6526 + "subject": { 6527 + "type": "string", 6528 + "format": "did", 6529 + }, 6530 + "activitySubscription": { 6531 + "type": "ref", 6532 + "ref": "lex:app.bsky.notification.defs#activitySubscription", 6533 + }, 6534 + }, 6535 + }, 6536 + }, 6537 + }, 3903 6538 "AppBskyNotificationRegisterPush": { 3904 6539 "lexicon": 1, 3905 6540 "id": "app.bsky.notification.registerPush", ··· 3937 6572 "appId": { 3938 6573 "type": "string", 3939 6574 }, 6575 + "ageRestricted": { 6576 + "type": "boolean", 6577 + "description": "Set to true when the actor is age restricted", 6578 + }, 3940 6579 }, 3941 6580 }, 3942 6581 }, ··· 3968 6607 }, 3969 6608 }, 3970 6609 }, 6610 + "AppBskyNotificationPutActivitySubscription": { 6611 + "lexicon": 1, 6612 + "id": "app.bsky.notification.putActivitySubscription", 6613 + "defs": { 6614 + "main": { 6615 + "type": "procedure", 6616 + "description": 6617 + "Puts an activity subscription entry. The key should be omitted for creation and provided for updates. Requires auth.", 6618 + "input": { 6619 + "encoding": "application/json", 6620 + "schema": { 6621 + "type": "object", 6622 + "required": [ 6623 + "subject", 6624 + "activitySubscription", 6625 + ], 6626 + "properties": { 6627 + "subject": { 6628 + "type": "string", 6629 + "format": "did", 6630 + }, 6631 + "activitySubscription": { 6632 + "type": "ref", 6633 + "ref": "lex:app.bsky.notification.defs#activitySubscription", 6634 + }, 6635 + }, 6636 + }, 6637 + }, 6638 + "output": { 6639 + "encoding": "application/json", 6640 + "schema": { 6641 + "type": "object", 6642 + "required": [ 6643 + "subject", 6644 + ], 6645 + "properties": { 6646 + "subject": { 6647 + "type": "string", 6648 + "format": "did", 6649 + }, 6650 + "activitySubscription": { 6651 + "type": "ref", 6652 + "ref": "lex:app.bsky.notification.defs#activitySubscription", 6653 + }, 6654 + }, 6655 + }, 6656 + }, 6657 + }, 6658 + }, 6659 + }, 6660 + "AppBskyNotificationDeclaration": { 6661 + "lexicon": 1, 6662 + "id": "app.bsky.notification.declaration", 6663 + "defs": { 6664 + "main": { 6665 + "type": "record", 6666 + "description": 6667 + "A declaration of the user's choices related to notifications that can be produced by them.", 6668 + "key": "literal:self", 6669 + "record": { 6670 + "type": "object", 6671 + "required": [ 6672 + "allowSubscriptions", 6673 + ], 6674 + "properties": { 6675 + "allowSubscriptions": { 6676 + "type": "string", 6677 + "description": 6678 + "A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.", 6679 + "knownValues": [ 6680 + "followers", 6681 + "mutuals", 6682 + "none", 6683 + ], 6684 + }, 6685 + }, 6686 + }, 6687 + }, 6688 + }, 6689 + }, 6690 + "AppBskyNotificationPutPreferencesV2": { 6691 + "lexicon": 1, 6692 + "id": "app.bsky.notification.putPreferencesV2", 6693 + "defs": { 6694 + "main": { 6695 + "type": "procedure", 6696 + "description": 6697 + "Set notification-related preferences for an account. Requires auth.", 6698 + "input": { 6699 + "encoding": "application/json", 6700 + "schema": { 6701 + "type": "object", 6702 + "properties": { 6703 + "chat": { 6704 + "type": "ref", 6705 + "ref": "lex:app.bsky.notification.defs#chatPreference", 6706 + }, 6707 + "follow": { 6708 + "type": "ref", 6709 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6710 + }, 6711 + "like": { 6712 + "type": "ref", 6713 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6714 + }, 6715 + "likeViaRepost": { 6716 + "type": "ref", 6717 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6718 + }, 6719 + "mention": { 6720 + "type": "ref", 6721 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6722 + }, 6723 + "quote": { 6724 + "type": "ref", 6725 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6726 + }, 6727 + "reply": { 6728 + "type": "ref", 6729 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6730 + }, 6731 + "repost": { 6732 + "type": "ref", 6733 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6734 + }, 6735 + "repostViaRepost": { 6736 + "type": "ref", 6737 + "ref": "lex:app.bsky.notification.defs#filterablePreference", 6738 + }, 6739 + "starterpackJoined": { 6740 + "type": "ref", 6741 + "ref": "lex:app.bsky.notification.defs#preference", 6742 + }, 6743 + "subscribedPost": { 6744 + "type": "ref", 6745 + "ref": "lex:app.bsky.notification.defs#preference", 6746 + }, 6747 + "unverified": { 6748 + "type": "ref", 6749 + "ref": "lex:app.bsky.notification.defs#preference", 6750 + }, 6751 + "verified": { 6752 + "type": "ref", 6753 + "ref": "lex:app.bsky.notification.defs#preference", 6754 + }, 6755 + }, 6756 + }, 6757 + }, 6758 + "output": { 6759 + "encoding": "application/json", 6760 + "schema": { 6761 + "type": "object", 6762 + "required": [ 6763 + "preferences", 6764 + ], 6765 + "properties": { 6766 + "preferences": { 6767 + "type": "ref", 6768 + "ref": "lex:app.bsky.notification.defs#preferences", 6769 + }, 6770 + }, 6771 + }, 6772 + }, 6773 + }, 6774 + }, 6775 + }, 3971 6776 "AppBskyNotificationUpdateSeen": { 3972 6777 "lexicon": 1, 3973 6778 "id": "app.bsky.notification.updateSeen", ··· 3994 6799 }, 3995 6800 }, 3996 6801 }, 6802 + "AppBskyNotificationListActivitySubscriptions": { 6803 + "lexicon": 1, 6804 + "id": "app.bsky.notification.listActivitySubscriptions", 6805 + "defs": { 6806 + "main": { 6807 + "type": "query", 6808 + "description": 6809 + "Enumerate all accounts to which the requesting account is subscribed to receive notifications for. Requires auth.", 6810 + "parameters": { 6811 + "type": "params", 6812 + "properties": { 6813 + "limit": { 6814 + "type": "integer", 6815 + "minimum": 1, 6816 + "maximum": 100, 6817 + "default": 50, 6818 + }, 6819 + "cursor": { 6820 + "type": "string", 6821 + }, 6822 + }, 6823 + }, 6824 + "output": { 6825 + "encoding": "application/json", 6826 + "schema": { 6827 + "type": "object", 6828 + "required": [ 6829 + "subscriptions", 6830 + ], 6831 + "properties": { 6832 + "cursor": { 6833 + "type": "string", 6834 + }, 6835 + "subscriptions": { 6836 + "type": "array", 6837 + "items": { 6838 + "type": "ref", 6839 + "ref": "lex:app.bsky.actor.defs#profileView", 6840 + }, 6841 + }, 6842 + }, 6843 + }, 6844 + }, 6845 + }, 6846 + }, 6847 + }, 6848 + "AppBskyNotificationUnregisterPush": { 6849 + "lexicon": 1, 6850 + "id": "app.bsky.notification.unregisterPush", 6851 + "defs": { 6852 + "main": { 6853 + "type": "procedure", 6854 + "description": 6855 + "The inverse of registerPush - inform a specified service that push notifications should no longer be sent to the given token for the requesting account. Requires auth.", 6856 + "input": { 6857 + "encoding": "application/json", 6858 + "schema": { 6859 + "type": "object", 6860 + "required": [ 6861 + "serviceDid", 6862 + "token", 6863 + "platform", 6864 + "appId", 6865 + ], 6866 + "properties": { 6867 + "serviceDid": { 6868 + "type": "string", 6869 + "format": "did", 6870 + }, 6871 + "token": { 6872 + "type": "string", 6873 + }, 6874 + "platform": { 6875 + "type": "string", 6876 + "knownValues": [ 6877 + "ios", 6878 + "android", 6879 + "web", 6880 + ], 6881 + }, 6882 + "appId": { 6883 + "type": "string", 6884 + }, 6885 + }, 6886 + }, 6887 + }, 6888 + }, 6889 + }, 6890 + }, 6891 + "AppBskyNotificationGetPreferences": { 6892 + "lexicon": 1, 6893 + "id": "app.bsky.notification.getPreferences", 6894 + "defs": { 6895 + "main": { 6896 + "type": "query", 6897 + "description": 6898 + "Get notification-related preferences for an account. Requires auth.", 6899 + "parameters": { 6900 + "type": "params", 6901 + "properties": {}, 6902 + }, 6903 + "output": { 6904 + "encoding": "application/json", 6905 + "schema": { 6906 + "type": "object", 6907 + "required": [ 6908 + "preferences", 6909 + ], 6910 + "properties": { 6911 + "preferences": { 6912 + "type": "ref", 6913 + "ref": "lex:app.bsky.notification.defs#preferences", 6914 + }, 6915 + }, 6916 + }, 6917 + }, 6918 + }, 6919 + }, 6920 + }, 3997 6921 "AppBskyNotificationListNotifications": { 3998 6922 "lexicon": 1, 3999 6923 "id": "app.bsky.notification.listNotifications", ··· 4089 7013 "reason": { 4090 7014 "type": "string", 4091 7015 "description": 4092 - "Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', and 'starterpack-joined'.", 7016 + "The reason why this notification was delivered - e.g. your post was liked, or you received a new follower.", 4093 7017 "knownValues": [ 4094 7018 "like", 4095 7019 "repost", ··· 4098 7022 "reply", 4099 7023 "quote", 4100 7024 "starterpack-joined", 7025 + "verified", 7026 + "unverified", 7027 + "like-via-repost", 7028 + "repost-via-repost", 7029 + "subscribed-post", 4101 7030 ], 4102 7031 }, 4103 7032 "reasonSubject": { ··· 4162 7091 }, 4163 7092 }, 4164 7093 }, 7094 + "AppBskyUnspeccedGetSuggestedFeedsSkeleton": { 7095 + "lexicon": 1, 7096 + "id": "app.bsky.unspecced.getSuggestedFeedsSkeleton", 7097 + "defs": { 7098 + "main": { 7099 + "type": "query", 7100 + "description": 7101 + "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds", 7102 + "parameters": { 7103 + "type": "params", 7104 + "properties": { 7105 + "viewer": { 7106 + "type": "string", 7107 + "format": "did", 7108 + "description": 7109 + "DID of the account making the request (not included for public/unauthenticated queries).", 7110 + }, 7111 + "limit": { 7112 + "type": "integer", 7113 + "minimum": 1, 7114 + "maximum": 25, 7115 + "default": 10, 7116 + }, 7117 + }, 7118 + }, 7119 + "output": { 7120 + "encoding": "application/json", 7121 + "schema": { 7122 + "type": "object", 7123 + "required": [ 7124 + "feeds", 7125 + ], 7126 + "properties": { 7127 + "feeds": { 7128 + "type": "array", 7129 + "items": { 7130 + "type": "string", 7131 + "format": "at-uri", 7132 + }, 7133 + }, 7134 + }, 7135 + }, 7136 + }, 7137 + }, 7138 + }, 7139 + }, 4165 7140 "AppBskyUnspeccedSearchStarterPacksSkeleton": { 4166 7141 "lexicon": 1, 4167 7142 "id": "app.bsky.unspecced.searchStarterPacksSkeleton", ··· 4295 7270 }, 4296 7271 }, 4297 7272 }, 7273 + "skeletonTrend": { 7274 + "type": "object", 7275 + "required": [ 7276 + "topic", 7277 + "displayName", 7278 + "link", 7279 + "startedAt", 7280 + "postCount", 7281 + "dids", 7282 + ], 7283 + "properties": { 7284 + "topic": { 7285 + "type": "string", 7286 + }, 7287 + "displayName": { 7288 + "type": "string", 7289 + }, 7290 + "link": { 7291 + "type": "string", 7292 + }, 7293 + "startedAt": { 7294 + "type": "string", 7295 + "format": "datetime", 7296 + }, 7297 + "postCount": { 7298 + "type": "integer", 7299 + }, 7300 + "status": { 7301 + "type": "string", 7302 + "knownValues": [ 7303 + "hot", 7304 + ], 7305 + }, 7306 + "category": { 7307 + "type": "string", 7308 + }, 7309 + "dids": { 7310 + "type": "array", 7311 + "items": { 7312 + "type": "string", 7313 + "format": "did", 7314 + }, 7315 + }, 7316 + }, 7317 + }, 7318 + "trendView": { 7319 + "type": "object", 7320 + "required": [ 7321 + "topic", 7322 + "displayName", 7323 + "link", 7324 + "startedAt", 7325 + "postCount", 7326 + "actors", 7327 + ], 7328 + "properties": { 7329 + "topic": { 7330 + "type": "string", 7331 + }, 7332 + "displayName": { 7333 + "type": "string", 7334 + }, 7335 + "link": { 7336 + "type": "string", 7337 + }, 7338 + "startedAt": { 7339 + "type": "string", 7340 + "format": "datetime", 7341 + }, 7342 + "postCount": { 7343 + "type": "integer", 7344 + }, 7345 + "status": { 7346 + "type": "string", 7347 + "knownValues": [ 7348 + "hot", 7349 + ], 7350 + }, 7351 + "category": { 7352 + "type": "string", 7353 + }, 7354 + "actors": { 7355 + "type": "array", 7356 + "items": { 7357 + "type": "ref", 7358 + "ref": "lex:app.bsky.actor.defs#profileViewBasic", 7359 + }, 7360 + }, 7361 + }, 7362 + }, 7363 + "threadItemPost": { 7364 + "type": "object", 7365 + "required": [ 7366 + "post", 7367 + "moreParents", 7368 + "moreReplies", 7369 + "opThread", 7370 + "hiddenByThreadgate", 7371 + "mutedByViewer", 7372 + ], 7373 + "properties": { 7374 + "post": { 7375 + "type": "ref", 7376 + "ref": "lex:app.bsky.feed.defs#postView", 7377 + }, 7378 + "moreParents": { 7379 + "type": "boolean", 7380 + "description": 7381 + "This post has more parents that were not present in the response. This is just a boolean, without the number of parents.", 7382 + }, 7383 + "moreReplies": { 7384 + "type": "integer", 7385 + "description": 7386 + "This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate.", 7387 + }, 7388 + "opThread": { 7389 + "type": "boolean", 7390 + "description": 7391 + "This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread.", 7392 + }, 7393 + "hiddenByThreadgate": { 7394 + "type": "boolean", 7395 + "description": 7396 + "The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread.", 7397 + }, 7398 + "mutedByViewer": { 7399 + "type": "boolean", 7400 + "description": 7401 + "This is by an account muted by the viewer requesting it.", 7402 + }, 7403 + }, 7404 + }, 7405 + "threadItemNoUnauthenticated": { 7406 + "type": "object", 7407 + "properties": {}, 7408 + }, 7409 + "threadItemNotFound": { 7410 + "type": "object", 7411 + "properties": {}, 7412 + }, 7413 + "threadItemBlocked": { 7414 + "type": "object", 7415 + "required": [ 7416 + "author", 7417 + ], 7418 + "properties": { 7419 + "author": { 7420 + "type": "ref", 7421 + "ref": "lex:app.bsky.feed.defs#blockedAuthor", 7422 + }, 7423 + }, 7424 + }, 7425 + "ageAssuranceState": { 7426 + "type": "object", 7427 + "description": 7428 + "The computed state of the age assurance process, returned to the user in question on certain authenticated requests.", 7429 + "required": [ 7430 + "status", 7431 + ], 7432 + "properties": { 7433 + "lastInitiatedAt": { 7434 + "type": "string", 7435 + "format": "datetime", 7436 + "description": "The timestamp when this state was last updated.", 7437 + }, 7438 + "status": { 7439 + "type": "string", 7440 + "description": "The status of the age assurance process.", 7441 + "knownValues": [ 7442 + "unknown", 7443 + "pending", 7444 + "assured", 7445 + "blocked", 7446 + ], 7447 + }, 7448 + }, 7449 + }, 7450 + "ageAssuranceEvent": { 7451 + "type": "object", 7452 + "description": "Object used to store age assurance data in stash.", 7453 + "required": [ 7454 + "createdAt", 7455 + "status", 7456 + "attemptId", 7457 + ], 7458 + "properties": { 7459 + "createdAt": { 7460 + "type": "string", 7461 + "format": "datetime", 7462 + "description": "The date and time of this write operation.", 7463 + }, 7464 + "status": { 7465 + "type": "string", 7466 + "description": "The status of the age assurance process.", 7467 + "knownValues": [ 7468 + "unknown", 7469 + "pending", 7470 + "assured", 7471 + ], 7472 + }, 7473 + "attemptId": { 7474 + "type": "string", 7475 + "description": 7476 + "The unique identifier for this instance of the age assurance flow, in UUID format.", 7477 + }, 7478 + "email": { 7479 + "type": "string", 7480 + "description": "The email used for AA.", 7481 + }, 7482 + "initIp": { 7483 + "type": "string", 7484 + "description": "The IP address used when initiating the AA flow.", 7485 + }, 7486 + "initUa": { 7487 + "type": "string", 7488 + "description": "The user agent used when initiating the AA flow.", 7489 + }, 7490 + "completeIp": { 7491 + "type": "string", 7492 + "description": "The IP address used when completing the AA flow.", 7493 + }, 7494 + "completeUa": { 7495 + "type": "string", 7496 + "description": "The user agent used when completing the AA flow.", 7497 + }, 7498 + }, 7499 + }, 7500 + }, 7501 + }, 7502 + "AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton": { 7503 + "lexicon": 1, 7504 + "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton", 7505 + "defs": { 7506 + "main": { 7507 + "type": "query", 7508 + "description": 7509 + "Get a skeleton of suggested starterpacks for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getOnboardingSuggestedStarterPacks", 7510 + "parameters": { 7511 + "type": "params", 7512 + "properties": { 7513 + "viewer": { 7514 + "type": "string", 7515 + "format": "did", 7516 + "description": 7517 + "DID of the account making the request (not included for public/unauthenticated queries).", 7518 + }, 7519 + "limit": { 7520 + "type": "integer", 7521 + "minimum": 1, 7522 + "maximum": 25, 7523 + "default": 10, 7524 + }, 7525 + }, 7526 + }, 7527 + "output": { 7528 + "encoding": "application/json", 7529 + "schema": { 7530 + "type": "object", 7531 + "required": [ 7532 + "starterPacks", 7533 + ], 7534 + "properties": { 7535 + "starterPacks": { 7536 + "type": "array", 7537 + "items": { 7538 + "type": "string", 7539 + "format": "at-uri", 7540 + }, 7541 + }, 7542 + }, 7543 + }, 7544 + }, 7545 + }, 7546 + }, 7547 + }, 7548 + "AppBskyUnspeccedGetSuggestedUsers": { 7549 + "lexicon": 1, 7550 + "id": "app.bsky.unspecced.getSuggestedUsers", 7551 + "defs": { 7552 + "main": { 7553 + "type": "query", 7554 + "description": "Get a list of suggested users", 7555 + "parameters": { 7556 + "type": "params", 7557 + "properties": { 7558 + "category": { 7559 + "type": "string", 7560 + "description": "Category of users to get suggestions for.", 7561 + }, 7562 + "limit": { 7563 + "type": "integer", 7564 + "minimum": 1, 7565 + "maximum": 50, 7566 + "default": 25, 7567 + }, 7568 + }, 7569 + }, 7570 + "output": { 7571 + "encoding": "application/json", 7572 + "schema": { 7573 + "type": "object", 7574 + "required": [ 7575 + "actors", 7576 + ], 7577 + "properties": { 7578 + "actors": { 7579 + "type": "array", 7580 + "items": { 7581 + "type": "ref", 7582 + "ref": "lex:app.bsky.actor.defs#profileView", 7583 + }, 7584 + }, 7585 + }, 7586 + }, 7587 + }, 7588 + }, 7589 + }, 7590 + }, 7591 + "AppBskyUnspeccedGetPostThreadOtherV2": { 7592 + "lexicon": 1, 7593 + "id": "app.bsky.unspecced.getPostThreadOtherV2", 7594 + "defs": { 7595 + "main": { 7596 + "type": "query", 7597 + "description": 7598 + "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get additional posts under a thread e.g. replies hidden by threadgate. Based on an anchor post at any depth of the tree, returns top-level replies below that anchor. It does not include ancestors nor the anchor itself. This should be called after exhausting `app.bsky.unspecced.getPostThreadV2`. Does not require auth, but additional metadata and filtering will be applied for authed requests.", 7599 + "parameters": { 7600 + "type": "params", 7601 + "required": [ 7602 + "anchor", 7603 + ], 7604 + "properties": { 7605 + "anchor": { 7606 + "type": "string", 7607 + "format": "at-uri", 7608 + "description": 7609 + "Reference (AT-URI) to post record. This is the anchor post.", 7610 + }, 7611 + }, 7612 + }, 7613 + "output": { 7614 + "encoding": "application/json", 7615 + "schema": { 7616 + "type": "object", 7617 + "required": [ 7618 + "thread", 7619 + ], 7620 + "properties": { 7621 + "thread": { 7622 + "type": "array", 7623 + "description": 7624 + "A flat list of other thread items. The depth of each item is indicated by the depth property inside the item.", 7625 + "items": { 7626 + "type": "ref", 7627 + "ref": 7628 + "lex:app.bsky.unspecced.getPostThreadOtherV2#threadItem", 7629 + }, 7630 + }, 7631 + }, 7632 + }, 7633 + }, 7634 + }, 7635 + "threadItem": { 7636 + "type": "object", 7637 + "required": [ 7638 + "uri", 7639 + "depth", 7640 + "value", 7641 + ], 7642 + "properties": { 7643 + "uri": { 7644 + "type": "string", 7645 + "format": "at-uri", 7646 + }, 7647 + "depth": { 7648 + "type": "integer", 7649 + "description": 7650 + "The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths.", 7651 + }, 7652 + "value": { 7653 + "type": "union", 7654 + "refs": [ 7655 + "lex:app.bsky.unspecced.defs#threadItemPost", 7656 + ], 7657 + }, 7658 + }, 7659 + }, 7660 + }, 7661 + }, 7662 + "AppBskyUnspeccedGetSuggestedStarterPacks": { 7663 + "lexicon": 1, 7664 + "id": "app.bsky.unspecced.getSuggestedStarterPacks", 7665 + "defs": { 7666 + "main": { 7667 + "type": "query", 7668 + "description": "Get a list of suggested starterpacks", 7669 + "parameters": { 7670 + "type": "params", 7671 + "properties": { 7672 + "limit": { 7673 + "type": "integer", 7674 + "minimum": 1, 7675 + "maximum": 25, 7676 + "default": 10, 7677 + }, 7678 + }, 7679 + }, 7680 + "output": { 7681 + "encoding": "application/json", 7682 + "schema": { 7683 + "type": "object", 7684 + "required": [ 7685 + "starterPacks", 7686 + ], 7687 + "properties": { 7688 + "starterPacks": { 7689 + "type": "array", 7690 + "items": { 7691 + "type": "ref", 7692 + "ref": "lex:app.bsky.graph.defs#starterPackView", 7693 + }, 7694 + }, 7695 + }, 7696 + }, 7697 + }, 7698 + }, 7699 + }, 7700 + }, 7701 + "AppBskyUnspeccedGetSuggestedStarterPacksSkeleton": { 7702 + "lexicon": 1, 7703 + "id": "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", 7704 + "defs": { 7705 + "main": { 7706 + "type": "query", 7707 + "description": 7708 + "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks", 7709 + "parameters": { 7710 + "type": "params", 7711 + "properties": { 7712 + "viewer": { 7713 + "type": "string", 7714 + "format": "did", 7715 + "description": 7716 + "DID of the account making the request (not included for public/unauthenticated queries).", 7717 + }, 7718 + "limit": { 7719 + "type": "integer", 7720 + "minimum": 1, 7721 + "maximum": 25, 7722 + "default": 10, 7723 + }, 7724 + }, 7725 + }, 7726 + "output": { 7727 + "encoding": "application/json", 7728 + "schema": { 7729 + "type": "object", 7730 + "required": [ 7731 + "starterPacks", 7732 + ], 7733 + "properties": { 7734 + "starterPacks": { 7735 + "type": "array", 7736 + "items": { 7737 + "type": "string", 7738 + "format": "at-uri", 7739 + }, 7740 + }, 7741 + }, 7742 + }, 7743 + }, 7744 + }, 7745 + }, 7746 + }, 7747 + "AppBskyUnspeccedGetOnboardingSuggestedStarterPacks": { 7748 + "lexicon": 1, 7749 + "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", 7750 + "defs": { 7751 + "main": { 7752 + "type": "query", 7753 + "description": "Get a list of suggested starterpacks for onboarding", 7754 + "parameters": { 7755 + "type": "params", 7756 + "properties": { 7757 + "limit": { 7758 + "type": "integer", 7759 + "minimum": 1, 7760 + "maximum": 25, 7761 + "default": 10, 7762 + }, 7763 + }, 7764 + }, 7765 + "output": { 7766 + "encoding": "application/json", 7767 + "schema": { 7768 + "type": "object", 7769 + "required": [ 7770 + "starterPacks", 7771 + ], 7772 + "properties": { 7773 + "starterPacks": { 7774 + "type": "array", 7775 + "items": { 7776 + "type": "ref", 7777 + "ref": "lex:app.bsky.graph.defs#starterPackView", 7778 + }, 7779 + }, 7780 + }, 7781 + }, 7782 + }, 7783 + }, 7784 + }, 7785 + }, 7786 + "AppBskyUnspeccedGetSuggestedUsersSkeleton": { 7787 + "lexicon": 1, 7788 + "id": "app.bsky.unspecced.getSuggestedUsersSkeleton", 7789 + "defs": { 7790 + "main": { 7791 + "type": "query", 7792 + "description": 7793 + "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers", 7794 + "parameters": { 7795 + "type": "params", 7796 + "properties": { 7797 + "viewer": { 7798 + "type": "string", 7799 + "format": "did", 7800 + "description": 7801 + "DID of the account making the request (not included for public/unauthenticated queries).", 7802 + }, 7803 + "category": { 7804 + "type": "string", 7805 + "description": "Category of users to get suggestions for.", 7806 + }, 7807 + "limit": { 7808 + "type": "integer", 7809 + "minimum": 1, 7810 + "maximum": 50, 7811 + "default": 25, 7812 + }, 7813 + }, 7814 + }, 7815 + "output": { 7816 + "encoding": "application/json", 7817 + "schema": { 7818 + "type": "object", 7819 + "required": [ 7820 + "dids", 7821 + ], 7822 + "properties": { 7823 + "dids": { 7824 + "type": "array", 7825 + "items": { 7826 + "type": "string", 7827 + "format": "did", 7828 + }, 7829 + }, 7830 + }, 7831 + }, 7832 + }, 7833 + }, 7834 + }, 7835 + }, 7836 + "AppBskyUnspeccedGetPostThreadV2": { 7837 + "lexicon": 1, 7838 + "id": "app.bsky.unspecced.getPostThreadV2", 7839 + "defs": { 7840 + "main": { 7841 + "type": "query", 7842 + "description": 7843 + "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get posts in a thread. It is based in an anchor post at any depth of the tree, and returns posts above it (recursively resolving the parent, without further branching to their replies) and below it (recursive replies, with branching to their replies). Does not require auth, but additional metadata and filtering will be applied for authed requests.", 7844 + "parameters": { 7845 + "type": "params", 7846 + "required": [ 7847 + "anchor", 7848 + ], 7849 + "properties": { 7850 + "anchor": { 7851 + "type": "string", 7852 + "format": "at-uri", 7853 + "description": 7854 + "Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post.", 7855 + }, 7856 + "above": { 7857 + "type": "boolean", 7858 + "description": "Whether to include parents above the anchor.", 7859 + "default": true, 7860 + }, 7861 + "below": { 7862 + "type": "integer", 7863 + "description": 7864 + "How many levels of replies to include below the anchor.", 7865 + "default": 6, 7866 + "minimum": 0, 7867 + "maximum": 20, 7868 + }, 7869 + "branchingFactor": { 7870 + "type": "integer", 7871 + "description": 7872 + "Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated).", 7873 + "default": 10, 7874 + "minimum": 0, 7875 + "maximum": 100, 7876 + }, 7877 + "sort": { 7878 + "type": "string", 7879 + "description": "Sorting for the thread replies.", 7880 + "knownValues": [ 7881 + "newest", 7882 + "oldest", 7883 + "top", 7884 + ], 7885 + "default": "oldest", 7886 + }, 7887 + }, 7888 + }, 7889 + "output": { 7890 + "encoding": "application/json", 7891 + "schema": { 7892 + "type": "object", 7893 + "required": [ 7894 + "thread", 7895 + "hasOtherReplies", 7896 + ], 7897 + "properties": { 7898 + "thread": { 7899 + "type": "array", 7900 + "description": 7901 + "A flat list of thread items. The depth of each item is indicated by the depth property inside the item.", 7902 + "items": { 7903 + "type": "ref", 7904 + "ref": "lex:app.bsky.unspecced.getPostThreadV2#threadItem", 7905 + }, 7906 + }, 7907 + "threadgate": { 7908 + "type": "ref", 7909 + "ref": "lex:app.bsky.feed.defs#threadgateView", 7910 + }, 7911 + "hasOtherReplies": { 7912 + "type": "boolean", 7913 + "description": 7914 + "Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them.", 7915 + }, 7916 + }, 7917 + }, 7918 + }, 7919 + }, 7920 + "threadItem": { 7921 + "type": "object", 7922 + "required": [ 7923 + "uri", 7924 + "depth", 7925 + "value", 7926 + ], 7927 + "properties": { 7928 + "uri": { 7929 + "type": "string", 7930 + "format": "at-uri", 7931 + }, 7932 + "depth": { 7933 + "type": "integer", 7934 + "description": 7935 + "The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths.", 7936 + }, 7937 + "value": { 7938 + "type": "union", 7939 + "refs": [ 7940 + "lex:app.bsky.unspecced.defs#threadItemPost", 7941 + "lex:app.bsky.unspecced.defs#threadItemNoUnauthenticated", 7942 + "lex:app.bsky.unspecced.defs#threadItemNotFound", 7943 + "lex:app.bsky.unspecced.defs#threadItemBlocked", 7944 + ], 7945 + }, 7946 + }, 7947 + }, 7948 + }, 7949 + }, 7950 + "AppBskyUnspeccedGetTrends": { 7951 + "lexicon": 1, 7952 + "id": "app.bsky.unspecced.getTrends", 7953 + "defs": { 7954 + "main": { 7955 + "type": "query", 7956 + "description": "Get the current trends on the network", 7957 + "parameters": { 7958 + "type": "params", 7959 + "properties": { 7960 + "limit": { 7961 + "type": "integer", 7962 + "minimum": 1, 7963 + "maximum": 25, 7964 + "default": 10, 7965 + }, 7966 + }, 7967 + }, 7968 + "output": { 7969 + "encoding": "application/json", 7970 + "schema": { 7971 + "type": "object", 7972 + "required": [ 7973 + "trends", 7974 + ], 7975 + "properties": { 7976 + "trends": { 7977 + "type": "array", 7978 + "items": { 7979 + "type": "ref", 7980 + "ref": "lex:app.bsky.unspecced.defs#trendView", 7981 + }, 7982 + }, 7983 + }, 7984 + }, 7985 + }, 7986 + }, 4298 7987 }, 4299 7988 }, 4300 7989 "AppBskyUnspeccedSearchActorsSkeleton": { ··· 4571 8260 }, 4572 8261 }, 4573 8262 }, 8263 + "AppBskyUnspeccedGetAgeAssuranceState": { 8264 + "lexicon": 1, 8265 + "id": "app.bsky.unspecced.getAgeAssuranceState", 8266 + "defs": { 8267 + "main": { 8268 + "type": "query", 8269 + "description": 8270 + "Returns the current state of the age assurance process for an account. This is used to check if the user has completed age assurance or if further action is required.", 8271 + "output": { 8272 + "encoding": "application/json", 8273 + "schema": { 8274 + "type": "ref", 8275 + "ref": "lex:app.bsky.unspecced.defs#ageAssuranceState", 8276 + }, 8277 + }, 8278 + }, 8279 + }, 8280 + }, 4574 8281 "AppBskyUnspeccedGetPopularFeedGenerators": { 4575 8282 "lexicon": 1, 4576 8283 "id": "app.bsky.unspecced.getPopularFeedGenerators", ··· 4619 8326 }, 4620 8327 }, 4621 8328 }, 8329 + "AppBskyUnspeccedInitAgeAssurance": { 8330 + "lexicon": 1, 8331 + "id": "app.bsky.unspecced.initAgeAssurance", 8332 + "defs": { 8333 + "main": { 8334 + "type": "procedure", 8335 + "description": 8336 + "Initiate age assurance for an account. This is a one-time action that will start the process of verifying the user's age.", 8337 + "input": { 8338 + "encoding": "application/json", 8339 + "schema": { 8340 + "type": "object", 8341 + "required": [ 8342 + "email", 8343 + "language", 8344 + "countryCode", 8345 + ], 8346 + "properties": { 8347 + "email": { 8348 + "type": "string", 8349 + "description": 8350 + "The user's email address to receive assurance instructions.", 8351 + }, 8352 + "language": { 8353 + "type": "string", 8354 + "description": 8355 + "The user's preferred language for communication during the assurance process.", 8356 + }, 8357 + "countryCode": { 8358 + "type": "string", 8359 + "description": 8360 + "An ISO 3166-1 alpha-2 code of the user's location.", 8361 + }, 8362 + }, 8363 + }, 8364 + }, 8365 + "output": { 8366 + "encoding": "application/json", 8367 + "schema": { 8368 + "type": "ref", 8369 + "ref": "lex:app.bsky.unspecced.defs#ageAssuranceState", 8370 + }, 8371 + }, 8372 + "errors": [ 8373 + { 8374 + "name": "InvalidEmail", 8375 + }, 8376 + { 8377 + "name": "DidTooLong", 8378 + }, 8379 + { 8380 + "name": "InvalidInitiation", 8381 + }, 8382 + ], 8383 + }, 8384 + }, 8385 + }, 4622 8386 "AppBskyUnspeccedGetTrendingTopics": { 4623 8387 "lexicon": 1, 4624 8388 "id": "app.bsky.unspecced.getTrendingTopics", ··· 4725 8489 "subject": { 4726 8490 "type": "string", 4727 8491 "format": "uri", 8492 + }, 8493 + }, 8494 + }, 8495 + }, 8496 + }, 8497 + "AppBskyUnspeccedGetSuggestedFeeds": { 8498 + "lexicon": 1, 8499 + "id": "app.bsky.unspecced.getSuggestedFeeds", 8500 + "defs": { 8501 + "main": { 8502 + "type": "query", 8503 + "description": "Get a list of suggested feeds", 8504 + "parameters": { 8505 + "type": "params", 8506 + "properties": { 8507 + "limit": { 8508 + "type": "integer", 8509 + "minimum": 1, 8510 + "maximum": 25, 8511 + "default": 10, 8512 + }, 8513 + }, 8514 + }, 8515 + "output": { 8516 + "encoding": "application/json", 8517 + "schema": { 8518 + "type": "object", 8519 + "required": [ 8520 + "feeds", 8521 + ], 8522 + "properties": { 8523 + "feeds": { 8524 + "type": "array", 8525 + "items": { 8526 + "type": "ref", 8527 + "ref": "lex:app.bsky.feed.defs#generatorView", 8528 + }, 8529 + }, 8530 + }, 8531 + }, 8532 + }, 8533 + }, 8534 + }, 8535 + }, 8536 + "AppBskyUnspeccedGetTrendsSkeleton": { 8537 + "lexicon": 1, 8538 + "id": "app.bsky.unspecced.getTrendsSkeleton", 8539 + "defs": { 8540 + "main": { 8541 + "type": "query", 8542 + "description": 8543 + "Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends", 8544 + "parameters": { 8545 + "type": "params", 8546 + "properties": { 8547 + "viewer": { 8548 + "type": "string", 8549 + "format": "did", 8550 + "description": 8551 + "DID of the account making the request (not included for public/unauthenticated queries).", 8552 + }, 8553 + "limit": { 8554 + "type": "integer", 8555 + "minimum": 1, 8556 + "maximum": 25, 8557 + "default": 10, 8558 + }, 8559 + }, 8560 + }, 8561 + "output": { 8562 + "encoding": "application/json", 8563 + "schema": { 8564 + "type": "object", 8565 + "required": [ 8566 + "trends", 8567 + ], 8568 + "properties": { 8569 + "trends": { 8570 + "type": "array", 8571 + "items": { 8572 + "type": "ref", 8573 + "ref": "lex:app.bsky.unspecced.defs#skeletonTrend", 8574 + }, 8575 + }, 8576 + }, 4728 8577 }, 4729 8578 }, 4730 8579 }, ··· 4746 8595 "checkEmailConfirmed": { 4747 8596 "type": "boolean", 4748 8597 }, 8598 + "liveNow": { 8599 + "type": "array", 8600 + "items": { 8601 + "type": "ref", 8602 + "ref": "lex:app.bsky.unspecced.getConfig#liveNowConfig", 8603 + }, 8604 + }, 8605 + }, 8606 + }, 8607 + }, 8608 + }, 8609 + "liveNowConfig": { 8610 + "type": "object", 8611 + "required": [ 8612 + "did", 8613 + "domains", 8614 + ], 8615 + "properties": { 8616 + "did": { 8617 + "type": "string", 8618 + "format": "did", 8619 + }, 8620 + "domains": { 8621 + "type": "array", 8622 + "items": { 8623 + "type": "string", 4749 8624 }, 4750 8625 }, 4751 8626 }, ··· 4878 8753 }, 4879 8754 }, 4880 8755 }, 8756 + "AppBskyGraphGetStarterPacksWithMembership": { 8757 + "lexicon": 1, 8758 + "id": "app.bsky.graph.getStarterPacksWithMembership", 8759 + "defs": { 8760 + "main": { 8761 + "type": "query", 8762 + "description": 8763 + "Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth.", 8764 + "parameters": { 8765 + "type": "params", 8766 + "required": [ 8767 + "actor", 8768 + ], 8769 + "properties": { 8770 + "actor": { 8771 + "type": "string", 8772 + "format": "at-identifier", 8773 + "description": "The account (actor) to check for membership.", 8774 + }, 8775 + "limit": { 8776 + "type": "integer", 8777 + "minimum": 1, 8778 + "maximum": 100, 8779 + "default": 50, 8780 + }, 8781 + "cursor": { 8782 + "type": "string", 8783 + }, 8784 + }, 8785 + }, 8786 + "output": { 8787 + "encoding": "application/json", 8788 + "schema": { 8789 + "type": "object", 8790 + "required": [ 8791 + "starterPacksWithMembership", 8792 + ], 8793 + "properties": { 8794 + "cursor": { 8795 + "type": "string", 8796 + }, 8797 + "starterPacksWithMembership": { 8798 + "type": "array", 8799 + "items": { 8800 + "type": "ref", 8801 + "ref": 8802 + "lex:app.bsky.graph.getStarterPacksWithMembership#starterPackWithMembership", 8803 + }, 8804 + }, 8805 + }, 8806 + }, 8807 + }, 8808 + }, 8809 + "starterPackWithMembership": { 8810 + "description": 8811 + "A starter pack and an optional list item indicating membership of a target user to that starter pack.", 8812 + "type": "object", 8813 + "required": [ 8814 + "starterPack", 8815 + ], 8816 + "properties": { 8817 + "starterPack": { 8818 + "type": "ref", 8819 + "ref": "lex:app.bsky.graph.defs#starterPackView", 8820 + }, 8821 + "listItem": { 8822 + "type": "ref", 8823 + "ref": "lex:app.bsky.graph.defs#listItemView", 8824 + }, 8825 + }, 8826 + }, 8827 + }, 8828 + }, 4881 8829 "AppBskyGraphFollow": { 4882 8830 "lexicon": 1, 4883 8831 "id": "app.bsky.graph.follow", ··· 4901 8849 "createdAt": { 4902 8850 "type": "string", 4903 8851 "format": "datetime", 8852 + }, 8853 + "via": { 8854 + "type": "ref", 8855 + "ref": "lex:com.atproto.repo.strongRef", 4904 8856 }, 4905 8857 }, 4906 8858 }, ··· 5245 9197 }, 5246 9198 }, 5247 9199 }, 9200 + "AppBskyGraphGetListsWithMembership": { 9201 + "lexicon": 1, 9202 + "id": "app.bsky.graph.getListsWithMembership", 9203 + "defs": { 9204 + "main": { 9205 + "type": "query", 9206 + "description": 9207 + "Enumerates the lists created by the session user, and includes membership information about `actor` in those lists. Only supports curation and moderation lists (no reference lists, used in starter packs). Requires auth.", 9208 + "parameters": { 9209 + "type": "params", 9210 + "required": [ 9211 + "actor", 9212 + ], 9213 + "properties": { 9214 + "actor": { 9215 + "type": "string", 9216 + "format": "at-identifier", 9217 + "description": "The account (actor) to check for membership.", 9218 + }, 9219 + "limit": { 9220 + "type": "integer", 9221 + "minimum": 1, 9222 + "maximum": 100, 9223 + "default": 50, 9224 + }, 9225 + "cursor": { 9226 + "type": "string", 9227 + }, 9228 + "purposes": { 9229 + "type": "array", 9230 + "description": 9231 + "Optional filter by list purpose. If not specified, all supported types are returned.", 9232 + "items": { 9233 + "type": "string", 9234 + "knownValues": [ 9235 + "modlist", 9236 + "curatelist", 9237 + ], 9238 + }, 9239 + }, 9240 + }, 9241 + }, 9242 + "output": { 9243 + "encoding": "application/json", 9244 + "schema": { 9245 + "type": "object", 9246 + "required": [ 9247 + "listsWithMembership", 9248 + ], 9249 + "properties": { 9250 + "cursor": { 9251 + "type": "string", 9252 + }, 9253 + "listsWithMembership": { 9254 + "type": "array", 9255 + "items": { 9256 + "type": "ref", 9257 + "ref": 9258 + "lex:app.bsky.graph.getListsWithMembership#listWithMembership", 9259 + }, 9260 + }, 9261 + }, 9262 + }, 9263 + }, 9264 + }, 9265 + "listWithMembership": { 9266 + "description": 9267 + "A list and an optional list item indicating membership of a target user to that list.", 9268 + "type": "object", 9269 + "required": [ 9270 + "list", 9271 + ], 9272 + "properties": { 9273 + "list": { 9274 + "type": "ref", 9275 + "ref": "lex:app.bsky.graph.defs#listView", 9276 + }, 9277 + "listItem": { 9278 + "type": "ref", 9279 + "ref": "lex:app.bsky.graph.defs#listItemView", 9280 + }, 9281 + }, 9282 + }, 9283 + }, 9284 + }, 5248 9285 "AppBskyGraphUnmuteActorList": { 5249 9286 "lexicon": 1, 5250 9287 "id": "app.bsky.graph.unmuteActorList", ··· 5640 9677 "cursor": { 5641 9678 "type": "string", 5642 9679 }, 9680 + "purposes": { 9681 + "type": "array", 9682 + "description": 9683 + "Optional filter by list purpose. If not specified, all supported types are returned.", 9684 + "items": { 9685 + "type": "string", 9686 + "knownValues": [ 9687 + "modlist", 9688 + "curatelist", 9689 + ], 9690 + }, 9691 + }, 5643 9692 }, 5644 9693 }, 5645 9694 "output": { ··· 5980 10029 }, 5981 10030 }, 5982 10031 }, 10032 + "AppBskyGraphVerification": { 10033 + "lexicon": 1, 10034 + "id": "app.bsky.graph.verification", 10035 + "defs": { 10036 + "main": { 10037 + "type": "record", 10038 + "description": 10039 + "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.", 10040 + "key": "tid", 10041 + "record": { 10042 + "type": "object", 10043 + "required": [ 10044 + "subject", 10045 + "handle", 10046 + "displayName", 10047 + "createdAt", 10048 + ], 10049 + "properties": { 10050 + "subject": { 10051 + "description": "DID of the subject the verification applies to.", 10052 + "type": "string", 10053 + "format": "did", 10054 + }, 10055 + "handle": { 10056 + "description": 10057 + "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.", 10058 + "type": "string", 10059 + "format": "handle", 10060 + }, 10061 + "displayName": { 10062 + "description": 10063 + "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.", 10064 + "type": "string", 10065 + }, 10066 + "createdAt": { 10067 + "description": "Date of when the verification was created.", 10068 + "type": "string", 10069 + "format": "datetime", 10070 + }, 10071 + }, 10072 + }, 10073 + }, 10074 + }, 10075 + }, 5983 10076 "AppBskyGraphGetListMutes": { 5984 10077 "lexicon": 1, 5985 10078 "id": "app.bsky.graph.getListMutes", ··· 6430 10523 "lex:app.bsky.embed.recordWithMedia#view", 6431 10524 ], 6432 10525 }, 10526 + "bookmarkCount": { 10527 + "type": "integer", 10528 + }, 6433 10529 "replyCount": { 6434 10530 "type": "integer", 6435 10531 }, ··· 6461 10557 "type": "ref", 6462 10558 "ref": "lex:app.bsky.feed.defs#threadgateView", 6463 10559 }, 10560 + "debug": { 10561 + "type": "unknown", 10562 + "description": "Debug information for internal development", 10563 + }, 6464 10564 }, 6465 10565 }, 6466 10566 "viewerState": { ··· 6475 10575 "like": { 6476 10576 "type": "string", 6477 10577 "format": "at-uri", 10578 + }, 10579 + "bookmarked": { 10580 + "type": "boolean", 6478 10581 }, 6479 10582 "threadMuted": { 6480 10583 "type": "boolean", ··· 6528 10631 "Context provided by feed generator that may be passed back alongside interactions.", 6529 10632 "maxLength": 2000, 6530 10633 }, 10634 + "reqId": { 10635 + "type": "string", 10636 + "description": 10637 + "Unique identifier per request that may be passed back alongside interactions.", 10638 + "maxLength": 100, 10639 + }, 6531 10640 }, 6532 10641 }, 6533 10642 "replyRef": { ··· 6572 10681 "type": "ref", 6573 10682 "ref": "lex:app.bsky.actor.defs#profileViewBasic", 6574 10683 }, 10684 + "uri": { 10685 + "type": "string", 10686 + "format": "at-uri", 10687 + }, 10688 + "cid": { 10689 + "type": "string", 10690 + "format": "cid", 10691 + }, 6575 10692 "indexedAt": { 6576 10693 "type": "string", 6577 10694 "format": "datetime", ··· 6852 10969 "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.", 6853 10970 "maxLength": 2000, 6854 10971 }, 10972 + "reqId": { 10973 + "type": "string", 10974 + "description": 10975 + "Unique identifier per request that may be passed back alongside interactions.", 10976 + "maxLength": 100, 10977 + }, 6855 10978 }, 6856 10979 }, 6857 10980 "requestLess": { ··· 7330 11453 }, 7331 11454 "hiddenReplies": { 7332 11455 "type": "array", 7333 - "maxLength": 50, 11456 + "maxLength": 300, 7334 11457 "items": { 7335 11458 "type": "string", 7336 11459 "format": "at-uri", ··· 7701 11824 "main": { 7702 11825 "type": "query", 7703 11826 "description": 7704 - "Find posts matching search criteria, returning views of those posts.", 11827 + "Find posts matching search criteria, returning views of those posts. Note that this API endpoint may require authentication (eg, not public) for some service providers and implementations.", 7705 11828 "parameters": { 7706 11829 "type": "params", 7707 11830 "required": [ ··· 8040 12163 "ref": "lex:app.bsky.feed.defs#skeletonFeedPost", 8041 12164 }, 8042 12165 }, 12166 + "reqId": { 12167 + "type": "string", 12168 + "description": 12169 + "Unique identifier per request that may be passed back alongside interactions.", 12170 + "maxLength": 100, 12171 + }, 8043 12172 }, 8044 12173 }, 8045 12174 }, ··· 8453 12582 }, 8454 12583 }, 8455 12584 }, 12585 + "AppBskyAgeassuranceBegin": { 12586 + "lexicon": 1, 12587 + "id": "app.bsky.ageassurance.begin", 12588 + "defs": { 12589 + "main": { 12590 + "type": "procedure", 12591 + "description": "Initiate Age Assurance for an account.", 12592 + "input": { 12593 + "encoding": "application/json", 12594 + "schema": { 12595 + "type": "object", 12596 + "required": [ 12597 + "email", 12598 + "language", 12599 + "countryCode", 12600 + ], 12601 + "properties": { 12602 + "email": { 12603 + "type": "string", 12604 + "description": 12605 + "The user's email address to receive Age Assurance instructions.", 12606 + }, 12607 + "language": { 12608 + "type": "string", 12609 + "description": 12610 + "The user's preferred language for communication during the Age Assurance process.", 12611 + }, 12612 + "countryCode": { 12613 + "type": "string", 12614 + "description": 12615 + "An ISO 3166-1 alpha-2 code of the user's location.", 12616 + }, 12617 + "regionCode": { 12618 + "type": "string", 12619 + "description": 12620 + "An optional ISO 3166-2 code of the user's region or state within the country.", 12621 + }, 12622 + }, 12623 + }, 12624 + }, 12625 + "output": { 12626 + "encoding": "application/json", 12627 + "schema": { 12628 + "type": "ref", 12629 + "ref": "lex:app.bsky.ageassurance.defs#state", 12630 + }, 12631 + }, 12632 + "errors": [ 12633 + { 12634 + "name": "InvalidEmail", 12635 + }, 12636 + { 12637 + "name": "DidTooLong", 12638 + }, 12639 + { 12640 + "name": "InvalidInitiation", 12641 + }, 12642 + { 12643 + "name": "RegionNotSupported", 12644 + }, 12645 + ], 12646 + }, 12647 + }, 12648 + }, 12649 + "AppBskyAgeassuranceDefs": { 12650 + "lexicon": 1, 12651 + "id": "app.bsky.ageassurance.defs", 12652 + "defs": { 12653 + "access": { 12654 + "description": 12655 + "The access level granted based on Age Assurance data we've processed.", 12656 + "type": "string", 12657 + "knownValues": [ 12658 + "unknown", 12659 + "none", 12660 + "safe", 12661 + "full", 12662 + ], 12663 + }, 12664 + "status": { 12665 + "type": "string", 12666 + "description": "The status of the Age Assurance process.", 12667 + "knownValues": [ 12668 + "unknown", 12669 + "pending", 12670 + "assured", 12671 + "blocked", 12672 + ], 12673 + }, 12674 + "state": { 12675 + "type": "object", 12676 + "description": "The user's computed Age Assurance state.", 12677 + "required": [ 12678 + "status", 12679 + "access", 12680 + ], 12681 + "properties": { 12682 + "lastInitiatedAt": { 12683 + "type": "string", 12684 + "format": "datetime", 12685 + "description": "The timestamp when this state was last updated.", 12686 + }, 12687 + "status": { 12688 + "type": "ref", 12689 + "ref": "lex:app.bsky.ageassurance.defs#status", 12690 + }, 12691 + "access": { 12692 + "type": "ref", 12693 + "ref": "lex:app.bsky.ageassurance.defs#access", 12694 + }, 12695 + }, 12696 + }, 12697 + "stateMetadata": { 12698 + "type": "object", 12699 + "description": 12700 + "Additional metadata needed to compute Age Assurance state client-side.", 12701 + "required": [], 12702 + "properties": { 12703 + "accountCreatedAt": { 12704 + "type": "string", 12705 + "format": "datetime", 12706 + "description": "The account creation timestamp.", 12707 + }, 12708 + }, 12709 + }, 12710 + "config": { 12711 + "type": "object", 12712 + "description": "", 12713 + "required": [ 12714 + "regions", 12715 + ], 12716 + "properties": { 12717 + "regions": { 12718 + "type": "array", 12719 + "description": "The per-region Age Assurance configuration.", 12720 + "items": { 12721 + "type": "ref", 12722 + "ref": "lex:app.bsky.ageassurance.defs#configRegion", 12723 + }, 12724 + }, 12725 + }, 12726 + }, 12727 + "configRegion": { 12728 + "type": "object", 12729 + "description": "The Age Assurance configuration for a specific region.", 12730 + "required": [ 12731 + "countryCode", 12732 + "rules", 12733 + ], 12734 + "properties": { 12735 + "countryCode": { 12736 + "type": "string", 12737 + "description": 12738 + "The ISO 3166-1 alpha-2 country code this configuration applies to.", 12739 + }, 12740 + "regionCode": { 12741 + "type": "string", 12742 + "description": 12743 + "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country.", 12744 + }, 12745 + "rules": { 12746 + "type": "array", 12747 + "description": 12748 + "The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item.", 12749 + "items": { 12750 + "type": "union", 12751 + "refs": [ 12752 + "lex:app.bsky.ageassurance.defs#configRegionRuleDefault", 12753 + "lex:app.bsky.ageassurance.defs#configRegionRuleIfDeclaredOverAge", 12754 + "lex:app.bsky.ageassurance.defs#configRegionRuleIfDeclaredUnderAge", 12755 + "lex:app.bsky.ageassurance.defs#configRegionRuleIfAssuredOverAge", 12756 + "lex:app.bsky.ageassurance.defs#configRegionRuleIfAssuredUnderAge", 12757 + "lex:app.bsky.ageassurance.defs#configRegionRuleIfAccountNewerThan", 12758 + "lex:app.bsky.ageassurance.defs#configRegionRuleIfAccountOlderThan", 12759 + ], 12760 + }, 12761 + }, 12762 + }, 12763 + }, 12764 + "configRegionRuleDefault": { 12765 + "type": "object", 12766 + "description": "Age Assurance rule that applies by default.", 12767 + "required": [ 12768 + "access", 12769 + ], 12770 + "properties": { 12771 + "access": { 12772 + "type": "ref", 12773 + "ref": "lex:app.bsky.ageassurance.defs#access", 12774 + }, 12775 + }, 12776 + }, 12777 + "configRegionRuleIfDeclaredOverAge": { 12778 + "type": "object", 12779 + "description": 12780 + "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age.", 12781 + "required": [ 12782 + "age", 12783 + "access", 12784 + ], 12785 + "properties": { 12786 + "age": { 12787 + "type": "integer", 12788 + "description": "The age threshold as a whole integer.", 12789 + }, 12790 + "access": { 12791 + "type": "ref", 12792 + "ref": "lex:app.bsky.ageassurance.defs#access", 12793 + }, 12794 + }, 12795 + }, 12796 + "configRegionRuleIfDeclaredUnderAge": { 12797 + "type": "object", 12798 + "description": 12799 + "Age Assurance rule that applies if the user has declared themselves under a certain age.", 12800 + "required": [ 12801 + "age", 12802 + "access", 12803 + ], 12804 + "properties": { 12805 + "age": { 12806 + "type": "integer", 12807 + "description": "The age threshold as a whole integer.", 12808 + }, 12809 + "access": { 12810 + "type": "ref", 12811 + "ref": "lex:app.bsky.ageassurance.defs#access", 12812 + }, 12813 + }, 12814 + }, 12815 + "configRegionRuleIfAssuredOverAge": { 12816 + "type": "object", 12817 + "description": 12818 + "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age.", 12819 + "required": [ 12820 + "age", 12821 + "access", 12822 + ], 12823 + "properties": { 12824 + "age": { 12825 + "type": "integer", 12826 + "description": "The age threshold as a whole integer.", 12827 + }, 12828 + "access": { 12829 + "type": "ref", 12830 + "ref": "lex:app.bsky.ageassurance.defs#access", 12831 + }, 12832 + }, 12833 + }, 12834 + "configRegionRuleIfAssuredUnderAge": { 12835 + "type": "object", 12836 + "description": 12837 + "Age Assurance rule that applies if the user has been assured to be under a certain age.", 12838 + "required": [ 12839 + "age", 12840 + "access", 12841 + ], 12842 + "properties": { 12843 + "age": { 12844 + "type": "integer", 12845 + "description": "The age threshold as a whole integer.", 12846 + }, 12847 + "access": { 12848 + "type": "ref", 12849 + "ref": "lex:app.bsky.ageassurance.defs#access", 12850 + }, 12851 + }, 12852 + }, 12853 + "configRegionRuleIfAccountNewerThan": { 12854 + "type": "object", 12855 + "description": 12856 + "Age Assurance rule that applies if the account is equal-to or newer than a certain date.", 12857 + "required": [ 12858 + "date", 12859 + "access", 12860 + ], 12861 + "properties": { 12862 + "date": { 12863 + "type": "string", 12864 + "format": "datetime", 12865 + "description": "The date threshold as a datetime string.", 12866 + }, 12867 + "access": { 12868 + "type": "ref", 12869 + "ref": "lex:app.bsky.ageassurance.defs#access", 12870 + }, 12871 + }, 12872 + }, 12873 + "configRegionRuleIfAccountOlderThan": { 12874 + "type": "object", 12875 + "description": 12876 + "Age Assurance rule that applies if the account is older than a certain date.", 12877 + "required": [ 12878 + "date", 12879 + "access", 12880 + ], 12881 + "properties": { 12882 + "date": { 12883 + "type": "string", 12884 + "format": "datetime", 12885 + "description": "The date threshold as a datetime string.", 12886 + }, 12887 + "access": { 12888 + "type": "ref", 12889 + "ref": "lex:app.bsky.ageassurance.defs#access", 12890 + }, 12891 + }, 12892 + }, 12893 + "event": { 12894 + "type": "object", 12895 + "description": "Object used to store Age Assurance data in stash.", 12896 + "required": [ 12897 + "createdAt", 12898 + "status", 12899 + "access", 12900 + "attemptId", 12901 + "countryCode", 12902 + ], 12903 + "properties": { 12904 + "createdAt": { 12905 + "type": "string", 12906 + "format": "datetime", 12907 + "description": "The date and time of this write operation.", 12908 + }, 12909 + "attemptId": { 12910 + "type": "string", 12911 + "description": 12912 + "The unique identifier for this instance of the Age Assurance flow, in UUID format.", 12913 + }, 12914 + "status": { 12915 + "type": "string", 12916 + "description": "The status of the Age Assurance process.", 12917 + "knownValues": [ 12918 + "unknown", 12919 + "pending", 12920 + "assured", 12921 + "blocked", 12922 + ], 12923 + }, 12924 + "access": { 12925 + "description": 12926 + "The access level granted based on Age Assurance data we've processed.", 12927 + "type": "string", 12928 + "knownValues": [ 12929 + "unknown", 12930 + "none", 12931 + "safe", 12932 + "full", 12933 + ], 12934 + }, 12935 + "countryCode": { 12936 + "type": "string", 12937 + "description": 12938 + "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow.", 12939 + }, 12940 + "regionCode": { 12941 + "type": "string", 12942 + "description": 12943 + "The ISO 3166-2 region code provided when beginning the Age Assurance flow.", 12944 + }, 12945 + "email": { 12946 + "type": "string", 12947 + "description": "The email used for Age Assurance.", 12948 + }, 12949 + "initIp": { 12950 + "type": "string", 12951 + "description": 12952 + "The IP address used when initiating the Age Assurance flow.", 12953 + }, 12954 + "initUa": { 12955 + "type": "string", 12956 + "description": 12957 + "The user agent used when initiating the Age Assurance flow.", 12958 + }, 12959 + "completeIp": { 12960 + "type": "string", 12961 + "description": 12962 + "The IP address used when completing the Age Assurance flow.", 12963 + }, 12964 + "completeUa": { 12965 + "type": "string", 12966 + "description": 12967 + "The user agent used when completing the Age Assurance flow.", 12968 + }, 12969 + }, 12970 + }, 12971 + }, 12972 + }, 12973 + "AppBskyAgeassuranceGetState": { 12974 + "lexicon": 1, 12975 + "id": "app.bsky.ageassurance.getState", 12976 + "defs": { 12977 + "main": { 12978 + "type": "query", 12979 + "description": 12980 + "Returns server-computed Age Assurance state, if available, and any additional metadata needed to compute Age Assurance state client-side.", 12981 + "parameters": { 12982 + "type": "params", 12983 + "required": [ 12984 + "countryCode", 12985 + ], 12986 + "properties": { 12987 + "countryCode": { 12988 + "type": "string", 12989 + }, 12990 + "regionCode": { 12991 + "type": "string", 12992 + }, 12993 + }, 12994 + }, 12995 + "output": { 12996 + "encoding": "application/json", 12997 + "schema": { 12998 + "type": "object", 12999 + "required": [ 13000 + "state", 13001 + "metadata", 13002 + ], 13003 + "properties": { 13004 + "state": { 13005 + "type": "ref", 13006 + "ref": "lex:app.bsky.ageassurance.defs#state", 13007 + }, 13008 + "metadata": { 13009 + "type": "ref", 13010 + "ref": "lex:app.bsky.ageassurance.defs#stateMetadata", 13011 + }, 13012 + }, 13013 + }, 13014 + }, 13015 + }, 13016 + }, 13017 + }, 13018 + "AppBskyAgeassuranceGetConfig": { 13019 + "lexicon": 1, 13020 + "id": "app.bsky.ageassurance.getConfig", 13021 + "defs": { 13022 + "main": { 13023 + "type": "query", 13024 + "description": 13025 + "Returns Age Assurance configuration for use on the client.", 13026 + "output": { 13027 + "encoding": "application/json", 13028 + "schema": { 13029 + "type": "ref", 13030 + "ref": "lex:app.bsky.ageassurance.defs#config", 13031 + }, 13032 + }, 13033 + }, 13034 + }, 13035 + }, 8456 13036 "AppBskyActorSearchActorsTypeahead": { 8457 13037 "lexicon": 1, 8458 13038 "id": "app.bsky.actor.searchActorsTypeahead", ··· 8525 13105 "maxGraphemes": 64, 8526 13106 "maxLength": 640, 8527 13107 }, 13108 + "pronouns": { 13109 + "type": "string", 13110 + }, 8528 13111 "avatar": { 8529 13112 "type": "string", 8530 13113 "format": "uri", ··· 8548 13131 "type": "string", 8549 13132 "format": "datetime", 8550 13133 }, 13134 + "verification": { 13135 + "type": "ref", 13136 + "ref": "lex:app.bsky.actor.defs#verificationState", 13137 + }, 13138 + "status": { 13139 + "type": "ref", 13140 + "ref": "lex:app.bsky.actor.defs#statusView", 13141 + }, 13142 + "debug": { 13143 + "type": "unknown", 13144 + "description": "Debug information for internal development", 13145 + }, 8551 13146 }, 8552 13147 }, 8553 13148 "profileView": { ··· 8569 13164 "type": "string", 8570 13165 "maxGraphemes": 64, 8571 13166 "maxLength": 640, 13167 + }, 13168 + "pronouns": { 13169 + "type": "string", 8572 13170 }, 8573 13171 "description": { 8574 13172 "type": "string", ··· 8602 13200 "ref": "lex:com.atproto.label.defs#label", 8603 13201 }, 8604 13202 }, 13203 + "verification": { 13204 + "type": "ref", 13205 + "ref": "lex:app.bsky.actor.defs#verificationState", 13206 + }, 13207 + "status": { 13208 + "type": "ref", 13209 + "ref": "lex:app.bsky.actor.defs#statusView", 13210 + }, 13211 + "debug": { 13212 + "type": "unknown", 13213 + "description": "Debug information for internal development", 13214 + }, 8605 13215 }, 8606 13216 }, 8607 13217 "profileViewDetailed": { ··· 8628 13238 "type": "string", 8629 13239 "maxGraphemes": 256, 8630 13240 "maxLength": 2560, 13241 + }, 13242 + "pronouns": { 13243 + "type": "string", 13244 + }, 13245 + "website": { 13246 + "type": "string", 13247 + "format": "uri", 8631 13248 }, 8632 13249 "avatar": { 8633 13250 "type": "string", ··· 8677 13294 "type": "ref", 8678 13295 "ref": "lex:com.atproto.repo.strongRef", 8679 13296 }, 13297 + "verification": { 13298 + "type": "ref", 13299 + "ref": "lex:app.bsky.actor.defs#verificationState", 13300 + }, 13301 + "status": { 13302 + "type": "ref", 13303 + "ref": "lex:app.bsky.actor.defs#statusView", 13304 + }, 13305 + "debug": { 13306 + "type": "unknown", 13307 + "description": "Debug information for internal development", 13308 + }, 8680 13309 }, 8681 13310 }, 8682 13311 "profileAssociated": { ··· 8698 13327 "type": "ref", 8699 13328 "ref": "lex:app.bsky.actor.defs#profileAssociatedChat", 8700 13329 }, 13330 + "activitySubscription": { 13331 + "type": "ref", 13332 + "ref": 13333 + "lex:app.bsky.actor.defs#profileAssociatedActivitySubscription", 13334 + }, 8701 13335 }, 8702 13336 }, 8703 13337 "profileAssociatedChat": { ··· 8716 13350 }, 8717 13351 }, 8718 13352 }, 13353 + "profileAssociatedActivitySubscription": { 13354 + "type": "object", 13355 + "required": [ 13356 + "allowSubscriptions", 13357 + ], 13358 + "properties": { 13359 + "allowSubscriptions": { 13360 + "type": "string", 13361 + "knownValues": [ 13362 + "followers", 13363 + "mutuals", 13364 + "none", 13365 + ], 13366 + }, 13367 + }, 13368 + }, 8719 13369 "viewerState": { 8720 13370 "type": "object", 8721 13371 "description": ··· 8748 13398 "format": "at-uri", 8749 13399 }, 8750 13400 "knownFollowers": { 13401 + "description": 13402 + "This property is present only in selected cases, as an optimization.", 8751 13403 "type": "ref", 8752 13404 "ref": "lex:app.bsky.actor.defs#knownFollowers", 8753 13405 }, 13406 + "activitySubscription": { 13407 + "description": 13408 + "This property is present only in selected cases, as an optimization.", 13409 + "type": "ref", 13410 + "ref": "lex:app.bsky.notification.defs#activitySubscription", 13411 + }, 8754 13412 }, 8755 13413 }, 8756 13414 "knownFollowers": { ··· 8775 13433 }, 8776 13434 }, 8777 13435 }, 13436 + "verificationState": { 13437 + "type": "object", 13438 + "description": 13439 + "Represents the verification information about the user this object is attached to.", 13440 + "required": [ 13441 + "verifications", 13442 + "verifiedStatus", 13443 + "trustedVerifierStatus", 13444 + ], 13445 + "properties": { 13446 + "verifications": { 13447 + "type": "array", 13448 + "description": 13449 + "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.", 13450 + "items": { 13451 + "type": "ref", 13452 + "ref": "lex:app.bsky.actor.defs#verificationView", 13453 + }, 13454 + }, 13455 + "verifiedStatus": { 13456 + "type": "string", 13457 + "description": "The user's status as a verified account.", 13458 + "knownValues": [ 13459 + "valid", 13460 + "invalid", 13461 + "none", 13462 + ], 13463 + }, 13464 + "trustedVerifierStatus": { 13465 + "type": "string", 13466 + "description": "The user's status as a trusted verifier.", 13467 + "knownValues": [ 13468 + "valid", 13469 + "invalid", 13470 + "none", 13471 + ], 13472 + }, 13473 + }, 13474 + }, 13475 + "verificationView": { 13476 + "type": "object", 13477 + "description": "An individual verification for an associated subject.", 13478 + "required": [ 13479 + "issuer", 13480 + "uri", 13481 + "isValid", 13482 + "createdAt", 13483 + ], 13484 + "properties": { 13485 + "issuer": { 13486 + "type": "string", 13487 + "description": "The user who issued this verification.", 13488 + "format": "did", 13489 + }, 13490 + "uri": { 13491 + "type": "string", 13492 + "description": "The AT-URI of the verification record.", 13493 + "format": "at-uri", 13494 + }, 13495 + "isValid": { 13496 + "type": "boolean", 13497 + "description": 13498 + "True if the verification passes validation, otherwise false.", 13499 + }, 13500 + "createdAt": { 13501 + "type": "string", 13502 + "description": "Timestamp when the verification was created.", 13503 + "format": "datetime", 13504 + }, 13505 + }, 13506 + }, 8778 13507 "preferences": { 8779 13508 "type": "array", 8780 13509 "items": { ··· 8793 13522 "lex:app.bsky.actor.defs#bskyAppStatePref", 8794 13523 "lex:app.bsky.actor.defs#labelersPref", 8795 13524 "lex:app.bsky.actor.defs#postInteractionSettingsPref", 13525 + "lex:app.bsky.actor.defs#verificationPrefs", 8796 13526 ], 8797 13527 }, 8798 13528 }, ··· 8963 13693 "random", 8964 13694 "hotness", 8965 13695 ], 8966 - }, 8967 - "prioritizeFollowedUsers": { 8968 - "type": "boolean", 8969 - "description": "Show followed users at the top of all replies.", 8970 13696 }, 8971 13697 }, 8972 13698 }, ··· 9176 13902 }, 9177 13903 }, 9178 13904 }, 13905 + "verificationPrefs": { 13906 + "type": "object", 13907 + "description": 13908 + "Preferences for how verified accounts appear in the app.", 13909 + "required": [], 13910 + "properties": { 13911 + "hideBadges": { 13912 + "description": 13913 + "Hide the blue check badges for verified accounts and trusted verifiers.", 13914 + "type": "boolean", 13915 + "default": false, 13916 + }, 13917 + }, 13918 + }, 9179 13919 "postInteractionSettingsPref": { 9180 13920 "type": "object", 9181 13921 "description": ··· 9211 13951 }, 9212 13952 }, 9213 13953 }, 13954 + "statusView": { 13955 + "type": "object", 13956 + "required": [ 13957 + "status", 13958 + "record", 13959 + ], 13960 + "properties": { 13961 + "status": { 13962 + "type": "string", 13963 + "description": "The status for the account.", 13964 + "knownValues": [ 13965 + "app.bsky.actor.status#live", 13966 + ], 13967 + }, 13968 + "record": { 13969 + "type": "unknown", 13970 + }, 13971 + "embed": { 13972 + "type": "union", 13973 + "description": "An optional embed associated with the status.", 13974 + "refs": [ 13975 + "lex:app.bsky.embed.external#view", 13976 + ], 13977 + }, 13978 + "expiresAt": { 13979 + "type": "string", 13980 + "description": 13981 + "The date when this status will expire. The application might choose to no longer return the status after expiration.", 13982 + "format": "datetime", 13983 + }, 13984 + "isActive": { 13985 + "type": "boolean", 13986 + "description": 13987 + "True if the status is not expired, false if it is expired. Only present if expiration was set.", 13988 + }, 13989 + }, 13990 + }, 9214 13991 }, 9215 13992 }, 9216 13993 "AppBskyActorPutPreferences": { ··· 9419 14196 }, 9420 14197 }, 9421 14198 }, 14199 + "AppBskyActorStatus": { 14200 + "lexicon": 1, 14201 + "id": "app.bsky.actor.status", 14202 + "defs": { 14203 + "main": { 14204 + "type": "record", 14205 + "description": "A declaration of a Bluesky account status.", 14206 + "key": "literal:self", 14207 + "record": { 14208 + "type": "object", 14209 + "required": [ 14210 + "status", 14211 + "createdAt", 14212 + ], 14213 + "properties": { 14214 + "status": { 14215 + "type": "string", 14216 + "description": "The status for the account.", 14217 + "knownValues": [ 14218 + "app.bsky.actor.status#live", 14219 + ], 14220 + }, 14221 + "embed": { 14222 + "type": "union", 14223 + "description": "An optional embed associated with the status.", 14224 + "refs": [ 14225 + "lex:app.bsky.embed.external", 14226 + ], 14227 + }, 14228 + "durationMinutes": { 14229 + "type": "integer", 14230 + "description": 14231 + "The duration of the status in minutes. Applications can choose to impose minimum and maximum limits.", 14232 + "minimum": 1, 14233 + }, 14234 + "createdAt": { 14235 + "type": "string", 14236 + "format": "datetime", 14237 + }, 14238 + }, 14239 + }, 14240 + }, 14241 + "live": { 14242 + "type": "token", 14243 + "description": 14244 + "Advertises an account as currently offering live content.", 14245 + }, 14246 + }, 14247 + }, 9422 14248 "AppBskyActorGetPreferences": { 9423 14249 "lexicon": 1, 9424 14250 "id": "app.bsky.actor.getPreferences", ··· 9470 14296 "description": "Free-form profile description text.", 9471 14297 "maxGraphemes": 256, 9472 14298 "maxLength": 2560, 14299 + }, 14300 + "pronouns": { 14301 + "type": "string", 14302 + "description": "Free-form pronouns text.", 14303 + "maxGraphemes": 20, 14304 + "maxLength": 200, 14305 + }, 14306 + "website": { 14307 + "type": "string", 14308 + "format": "uri", 9473 14309 }, 9474 14310 "avatar": { 9475 14311 "type": "blob", ··· 9967 14803 "lex:app.bsky.embed.record#view", 9968 14804 ], 9969 14805 }, 14806 + "reactions": { 14807 + "type": "array", 14808 + "description": 14809 + "Reactions to this message, in ascending order of creation time.", 14810 + "items": { 14811 + "type": "ref", 14812 + "ref": "lex:chat.bsky.convo.defs#reactionView", 14813 + }, 14814 + }, 9970 14815 "sender": { 9971 14816 "type": "ref", 9972 14817 "ref": "lex:chat.bsky.convo.defs#messageViewSender", ··· 10014 14859 }, 10015 14860 }, 10016 14861 }, 14862 + "reactionView": { 14863 + "type": "object", 14864 + "required": [ 14865 + "value", 14866 + "sender", 14867 + "createdAt", 14868 + ], 14869 + "properties": { 14870 + "value": { 14871 + "type": "string", 14872 + }, 14873 + "sender": { 14874 + "type": "ref", 14875 + "ref": "lex:chat.bsky.convo.defs#reactionViewSender", 14876 + }, 14877 + "createdAt": { 14878 + "type": "string", 14879 + "format": "datetime", 14880 + }, 14881 + }, 14882 + }, 14883 + "reactionViewSender": { 14884 + "type": "object", 14885 + "required": [ 14886 + "did", 14887 + ], 14888 + "properties": { 14889 + "did": { 14890 + "type": "string", 14891 + "format": "did", 14892 + }, 14893 + }, 14894 + }, 14895 + "messageAndReactionView": { 14896 + "type": "object", 14897 + "required": [ 14898 + "message", 14899 + "reaction", 14900 + ], 14901 + "properties": { 14902 + "message": { 14903 + "type": "ref", 14904 + "ref": "lex:chat.bsky.convo.defs#messageView", 14905 + }, 14906 + "reaction": { 14907 + "type": "ref", 14908 + "ref": "lex:chat.bsky.convo.defs#reactionView", 14909 + }, 14910 + }, 14911 + }, 10017 14912 "convoView": { 10018 14913 "type": "object", 10019 14914 "required": [ ··· 10042 14937 "refs": [ 10043 14938 "lex:chat.bsky.convo.defs#messageView", 10044 14939 "lex:chat.bsky.convo.defs#deletedMessageView", 14940 + ], 14941 + }, 14942 + "lastReaction": { 14943 + "type": "union", 14944 + "refs": [ 14945 + "lex:chat.bsky.convo.defs#messageAndReactionView", 10045 14946 ], 10046 14947 }, 10047 14948 "muted": { ··· 10203 15104 }, 10204 15105 }, 10205 15106 }, 15107 + "logAddReaction": { 15108 + "type": "object", 15109 + "required": [ 15110 + "rev", 15111 + "convoId", 15112 + "message", 15113 + "reaction", 15114 + ], 15115 + "properties": { 15116 + "rev": { 15117 + "type": "string", 15118 + }, 15119 + "convoId": { 15120 + "type": "string", 15121 + }, 15122 + "message": { 15123 + "type": "union", 15124 + "refs": [ 15125 + "lex:chat.bsky.convo.defs#messageView", 15126 + "lex:chat.bsky.convo.defs#deletedMessageView", 15127 + ], 15128 + }, 15129 + "reaction": { 15130 + "type": "ref", 15131 + "ref": "lex:chat.bsky.convo.defs#reactionView", 15132 + }, 15133 + }, 15134 + }, 15135 + "logRemoveReaction": { 15136 + "type": "object", 15137 + "required": [ 15138 + "rev", 15139 + "convoId", 15140 + "message", 15141 + "reaction", 15142 + ], 15143 + "properties": { 15144 + "rev": { 15145 + "type": "string", 15146 + }, 15147 + "convoId": { 15148 + "type": "string", 15149 + }, 15150 + "message": { 15151 + "type": "union", 15152 + "refs": [ 15153 + "lex:chat.bsky.convo.defs#messageView", 15154 + "lex:chat.bsky.convo.defs#deletedMessageView", 15155 + ], 15156 + }, 15157 + "reaction": { 15158 + "type": "ref", 15159 + "ref": "lex:chat.bsky.convo.defs#reactionView", 15160 + }, 15161 + }, 15162 + }, 10206 15163 }, 10207 15164 }, 10208 15165 "ChatBskyConvoGetConvoAvailability": { ··· 10285 15242 "lex:chat.bsky.convo.defs#logBeginConvo", 10286 15243 "lex:chat.bsky.convo.defs#logAcceptConvo", 10287 15244 "lex:chat.bsky.convo.defs#logLeaveConvo", 15245 + "lex:chat.bsky.convo.defs#logMuteConvo", 15246 + "lex:chat.bsky.convo.defs#logUnmuteConvo", 10288 15247 "lex:chat.bsky.convo.defs#logCreateMessage", 10289 15248 "lex:chat.bsky.convo.defs#logDeleteMessage", 15249 + "lex:chat.bsky.convo.defs#logReadMessage", 15250 + "lex:chat.bsky.convo.defs#logAddReaction", 15251 + "lex:chat.bsky.convo.defs#logRemoveReaction", 10290 15252 ], 10291 15253 }, 10292 15254 }, ··· 10372 15334 }, 10373 15335 }, 10374 15336 }, 15337 + "ChatBskyConvoAddReaction": { 15338 + "lexicon": 1, 15339 + "id": "chat.bsky.convo.addReaction", 15340 + "defs": { 15341 + "main": { 15342 + "type": "procedure", 15343 + "description": 15344 + "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.", 15345 + "input": { 15346 + "encoding": "application/json", 15347 + "schema": { 15348 + "type": "object", 15349 + "required": [ 15350 + "convoId", 15351 + "messageId", 15352 + "value", 15353 + ], 15354 + "properties": { 15355 + "convoId": { 15356 + "type": "string", 15357 + }, 15358 + "messageId": { 15359 + "type": "string", 15360 + }, 15361 + "value": { 15362 + "type": "string", 15363 + "minLength": 1, 15364 + "maxLength": 64, 15365 + "minGraphemes": 1, 15366 + "maxGraphemes": 1, 15367 + }, 15368 + }, 15369 + }, 15370 + }, 15371 + "output": { 15372 + "encoding": "application/json", 15373 + "schema": { 15374 + "type": "object", 15375 + "required": [ 15376 + "message", 15377 + ], 15378 + "properties": { 15379 + "message": { 15380 + "type": "ref", 15381 + "ref": "lex:chat.bsky.convo.defs#messageView", 15382 + }, 15383 + }, 15384 + }, 15385 + }, 15386 + "errors": [ 15387 + { 15388 + "name": "ReactionMessageDeleted", 15389 + "description": 15390 + "Indicates that the message has been deleted and reactions can no longer be added/removed.", 15391 + }, 15392 + { 15393 + "name": "ReactionLimitReached", 15394 + "description": 15395 + "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.", 15396 + }, 15397 + { 15398 + "name": "ReactionInvalidValue", 15399 + "description": 15400 + "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji.", 15401 + }, 15402 + ], 15403 + }, 15404 + }, 15405 + }, 10375 15406 "ChatBskyConvoAcceptConvo": { 10376 15407 "lexicon": 1, 10377 15408 "id": "chat.bsky.convo.acceptConvo", ··· 10480 15511 }, 10481 15512 }, 10482 15513 }, 15514 + "ChatBskyConvoRemoveReaction": { 15515 + "lexicon": 1, 15516 + "id": "chat.bsky.convo.removeReaction", 15517 + "defs": { 15518 + "main": { 15519 + "type": "procedure", 15520 + "description": 15521 + "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.", 15522 + "input": { 15523 + "encoding": "application/json", 15524 + "schema": { 15525 + "type": "object", 15526 + "required": [ 15527 + "convoId", 15528 + "messageId", 15529 + "value", 15530 + ], 15531 + "properties": { 15532 + "convoId": { 15533 + "type": "string", 15534 + }, 15535 + "messageId": { 15536 + "type": "string", 15537 + }, 15538 + "value": { 15539 + "type": "string", 15540 + "minLength": 1, 15541 + "maxLength": 64, 15542 + "minGraphemes": 1, 15543 + "maxGraphemes": 1, 15544 + }, 15545 + }, 15546 + }, 15547 + }, 15548 + "output": { 15549 + "encoding": "application/json", 15550 + "schema": { 15551 + "type": "object", 15552 + "required": [ 15553 + "message", 15554 + ], 15555 + "properties": { 15556 + "message": { 15557 + "type": "ref", 15558 + "ref": "lex:chat.bsky.convo.defs#messageView", 15559 + }, 15560 + }, 15561 + }, 15562 + }, 15563 + "errors": [ 15564 + { 15565 + "name": "ReactionMessageDeleted", 15566 + "description": 15567 + "Indicates that the message has been deleted and reactions can no longer be added/removed.", 15568 + }, 15569 + { 15570 + "name": "ReactionInvalidValue", 15571 + "description": 15572 + "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji.", 15573 + }, 15574 + ], 15575 + }, 15576 + }, 15577 + }, 10483 15578 "ChatBskyConvoUpdateRead": { 10484 15579 "lexicon": 1, 10485 15580 "id": "chat.bsky.convo.updateRead", ··· 10797 15892 "chatDisabled": { 10798 15893 "type": "boolean", 10799 15894 "description": 10800 - "Set to true when the actor cannot actively participate in converations", 15895 + "Set to true when the actor cannot actively participate in conversations", 15896 + }, 15897 + "verification": { 15898 + "type": "ref", 15899 + "ref": "lex:app.bsky.actor.defs#verificationState", 10801 15900 }, 10802 15901 }, 10803 15902 }, ··· 13169 18268 "minimum": 0, 13170 18269 "maximum": 1000, 13171 18270 }, 13172 - "prioritizeFollowedUsers": { 13173 - "type": "boolean", 13174 - "description": 13175 - "Whether to prioritize posts from followed users. It only has effect when the user is authenticated.", 13176 - "default": false, 13177 - }, 13178 18271 "sort": { 13179 18272 "type": "string", 13180 18273 "description": "Sorting for the thread replies.", ··· 14152 19245 }, 14153 19246 "coverArt": { 14154 19247 "type": "string", 19248 + "format": "uri", 14155 19249 }, 14156 19250 "details": { 14157 19251 "type": "ref", ··· 14160 19254 "indexedAt": { 14161 19255 "type": "string", 14162 19256 "format": "datetime", 19257 + }, 19258 + "audio": { 19259 + "type": "string", 19260 + "format": "uri", 14163 19261 }, 14164 19262 "labels": { 14165 19263 "type": "array", ··· 14765 19863 "items": { 14766 19864 "type": "union", 14767 19865 "refs": [ 14768 - "lex:so.sprk.actor.defs#adultContentPref", 14769 19866 "lex:so.sprk.actor.defs#contentLabelPref", 14770 19867 "lex:so.sprk.actor.defs#savedFeedsPref", 14771 19868 "lex:so.sprk.actor.defs#personalDetailsPref", ··· 14779 19876 ], 14780 19877 }, 14781 19878 }, 14782 - "adultContentPref": { 14783 - "type": "object", 14784 - "required": [ 14785 - "enabled", 14786 - ], 14787 - "properties": { 14788 - "enabled": { 14789 - "type": "boolean", 14790 - "default": false, 14791 - }, 14792 - }, 14793 - }, 14794 19879 "contentLabelPref": { 14795 19880 "type": "object", 14796 19881 "required": [ ··· 14925 20010 "random", 14926 20011 "hotness", 14927 20012 ], 14928 - }, 14929 - "prioritizeFollowedUsers": { 14930 - "type": "boolean", 14931 - "description": "Show followed users at the top of all replies.", 14932 20013 }, 14933 20014 }, 14934 20015 }, ··· 15638 20719 "type": "integer", 15639 20720 "minimum": 0, 15640 20721 }, 15641 - "lookCount": { 15642 - "type": "integer", 15643 - "minimum": 0, 15644 - }, 15645 20722 "viewer": { 15646 20723 "type": "ref", 15647 20724 "ref": "lex:so.sprk.labeler.defs#labelerViewerState", ··· 15689 20766 "type": "integer", 15690 20767 "minimum": 0, 15691 20768 }, 15692 - "lookCount": { 15693 - "type": "integer", 15694 - "minimum": 0, 15695 - }, 15696 20769 "viewer": { 15697 20770 "type": "ref", 15698 20771 "ref": "lex:so.sprk.labeler.defs#labelerViewerState", ··· 15708 20781 "ref": "lex:com.atproto.label.defs#label", 15709 20782 }, 15710 20783 }, 20784 + "reasonTypes": { 20785 + "description": 20786 + "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.", 20787 + "type": "array", 20788 + "items": { 20789 + "type": "ref", 20790 + "ref": "lex:com.atproto.moderation.defs#reasonType", 20791 + }, 20792 + }, 20793 + "subjectTypes": { 20794 + "description": 20795 + "The set of subject types (account, record, etc) this service accepts reports on.", 20796 + "type": "array", 20797 + "items": { 20798 + "type": "ref", 20799 + "ref": "lex:com.atproto.moderation.defs#subjectType", 20800 + }, 20801 + }, 20802 + "subjectCollections": { 20803 + "type": "array", 20804 + "description": 20805 + "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.", 20806 + "items": { 20807 + "type": "string", 20808 + "format": "nsid", 20809 + }, 20810 + }, 15711 20811 }, 15712 20812 }, 15713 20813 "labelerViewerState": { 15714 20814 "type": "object", 15715 20815 "properties": { 15716 20816 "like": { 15717 - "type": "string", 15718 - "format": "at-uri", 15719 - }, 15720 - "look": { 15721 20817 "type": "string", 15722 20818 "format": "at-uri", 15723 20819 }, ··· 15780 20876 "type": "string", 15781 20877 "format": "datetime", 15782 20878 }, 20879 + "reasonTypes": { 20880 + "description": 20881 + "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.", 20882 + "type": "array", 20883 + "items": { 20884 + "type": "ref", 20885 + "ref": "lex:com.atproto.moderation.defs#reasonType", 20886 + }, 20887 + }, 20888 + "subjectTypes": { 20889 + "description": 20890 + "The set of subject types (account, record, etc) this service accepts reports on.", 20891 + "type": "array", 20892 + "items": { 20893 + "type": "ref", 20894 + "ref": "lex:com.atproto.moderation.defs#subjectType", 20895 + }, 20896 + }, 20897 + "subjectCollections": { 20898 + "type": "array", 20899 + "description": 20900 + "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.", 20901 + "items": { 20902 + "type": "string", 20903 + "format": "nsid", 20904 + }, 20905 + }, 15783 20906 }, 15784 20907 }, 15785 20908 }, ··· 16053 21176 }, 16054 21177 }, 16055 21178 }, 21179 + "ComAtprotoTempDereferenceScope": { 21180 + "lexicon": 1, 21181 + "id": "com.atproto.temp.dereferenceScope", 21182 + "defs": { 21183 + "main": { 21184 + "type": "query", 21185 + "description": 21186 + "Allows finding the oauth permission scope from a reference", 21187 + "parameters": { 21188 + "type": "params", 21189 + "required": [ 21190 + "scope", 21191 + ], 21192 + "properties": { 21193 + "scope": { 21194 + "type": "string", 21195 + "description": "The scope reference (starts with 'ref:')", 21196 + }, 21197 + }, 21198 + }, 21199 + "output": { 21200 + "encoding": "application/json", 21201 + "schema": { 21202 + "type": "object", 21203 + "required": [ 21204 + "scope", 21205 + ], 21206 + "properties": { 21207 + "scope": { 21208 + "type": "string", 21209 + "description": "The full oauth permission scope", 21210 + }, 21211 + }, 21212 + }, 21213 + }, 21214 + "errors": [ 21215 + { 21216 + "name": "InvalidScopeReference", 21217 + "description": "An invalid scope reference was provided.", 21218 + }, 21219 + ], 21220 + }, 21221 + }, 21222 + }, 16056 21223 "ComAtprotoTempAddReservedHandle": { 16057 21224 "lexicon": 1, 16058 21225 "id": "com.atproto.temp.addReservedHandle", ··· 16114 21281 }, 16115 21282 }, 16116 21283 }, 21284 + "ComAtprotoTempCheckHandleAvailability": { 21285 + "lexicon": 1, 21286 + "id": "com.atproto.temp.checkHandleAvailability", 21287 + "defs": { 21288 + "main": { 21289 + "type": "query", 21290 + "description": 21291 + "Checks whether the provided handle is available. If the handle is not available, available suggestions will be returned. Optional inputs will be used to generate suggestions.", 21292 + "parameters": { 21293 + "type": "params", 21294 + "required": [ 21295 + "handle", 21296 + ], 21297 + "properties": { 21298 + "handle": { 21299 + "type": "string", 21300 + "format": "handle", 21301 + "description": 21302 + "Tentative handle. Will be checked for availability or used to build handle suggestions.", 21303 + }, 21304 + "email": { 21305 + "type": "string", 21306 + "description": 21307 + "User-provided email. Might be used to build handle suggestions.", 21308 + }, 21309 + "birthDate": { 21310 + "type": "string", 21311 + "format": "datetime", 21312 + "description": 21313 + "User-provided birth date. Might be used to build handle suggestions.", 21314 + }, 21315 + }, 21316 + }, 21317 + "output": { 21318 + "encoding": "application/json", 21319 + "schema": { 21320 + "type": "object", 21321 + "required": [ 21322 + "handle", 21323 + "result", 21324 + ], 21325 + "properties": { 21326 + "handle": { 21327 + "type": "string", 21328 + "format": "handle", 21329 + "description": "Echo of the input handle.", 21330 + }, 21331 + "result": { 21332 + "type": "union", 21333 + "refs": [ 21334 + "lex:com.atproto.temp.checkHandleAvailability#resultAvailable", 21335 + "lex:com.atproto.temp.checkHandleAvailability#resultUnavailable", 21336 + ], 21337 + }, 21338 + }, 21339 + }, 21340 + }, 21341 + "errors": [ 21342 + { 21343 + "name": "InvalidEmail", 21344 + "description": "An invalid email was provided.", 21345 + }, 21346 + ], 21347 + }, 21348 + "resultAvailable": { 21349 + "type": "object", 21350 + "description": "Indicates the provided handle is available.", 21351 + "properties": {}, 21352 + }, 21353 + "resultUnavailable": { 21354 + "type": "object", 21355 + "description": 21356 + "Indicates the provided handle is unavailable and gives suggestions of available handles.", 21357 + "required": [ 21358 + "suggestions", 21359 + ], 21360 + "properties": { 21361 + "suggestions": { 21362 + "type": "array", 21363 + "description": 21364 + "List of suggested handles based on the provided inputs.", 21365 + "items": { 21366 + "type": "ref", 21367 + "ref": "lex:com.atproto.temp.checkHandleAvailability#suggestion", 21368 + }, 21369 + }, 21370 + }, 21371 + }, 21372 + "suggestion": { 21373 + "type": "object", 21374 + "required": [ 21375 + "handle", 21376 + "method", 21377 + ], 21378 + "properties": { 21379 + "handle": { 21380 + "type": "string", 21381 + "format": "handle", 21382 + }, 21383 + "method": { 21384 + "type": "string", 21385 + "description": 21386 + "Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics.", 21387 + }, 21388 + }, 21389 + }, 21390 + }, 21391 + }, 16117 21392 "ComAtprotoTempRequestPhoneVerification": { 16118 21393 "lexicon": 1, 16119 21394 "id": "com.atproto.temp.requestPhoneVerification", ··· 16132 21407 "properties": { 16133 21408 "phoneNumber": { 16134 21409 "type": "string", 21410 + }, 21411 + }, 21412 + }, 21413 + }, 21414 + }, 21415 + }, 21416 + }, 21417 + "ComAtprotoTempRevokeAccountCredentials": { 21418 + "lexicon": 1, 21419 + "id": "com.atproto.temp.revokeAccountCredentials", 21420 + "defs": { 21421 + "main": { 21422 + "type": "procedure", 21423 + "description": 21424 + "Revoke sessions, password, and app passwords associated with account. May be resolved by a password reset.", 21425 + "input": { 21426 + "encoding": "application/json", 21427 + "schema": { 21428 + "type": "object", 21429 + "required": [ 21430 + "account", 21431 + ], 21432 + "properties": { 21433 + "account": { 21434 + "type": "string", 21435 + "format": "at-identifier", 16135 21436 }, 16136 21437 }, 16137 21438 }, ··· 16209 21510 }, 16210 21511 }, 16211 21512 }, 21513 + "ComAtprotoIdentityDefs": { 21514 + "lexicon": 1, 21515 + "id": "com.atproto.identity.defs", 21516 + "defs": { 21517 + "identityInfo": { 21518 + "type": "object", 21519 + "required": [ 21520 + "did", 21521 + "handle", 21522 + "didDoc", 21523 + ], 21524 + "properties": { 21525 + "did": { 21526 + "type": "string", 21527 + "format": "did", 21528 + }, 21529 + "handle": { 21530 + "type": "string", 21531 + "format": "handle", 21532 + "description": 21533 + "The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.", 21534 + }, 21535 + "didDoc": { 21536 + "type": "unknown", 21537 + "description": "The complete DID document for the identity.", 21538 + }, 21539 + }, 21540 + }, 21541 + }, 21542 + }, 16212 21543 "ComAtprotoIdentitySignPlcOperation": { 16213 21544 "lexicon": 1, 16214 21545 "id": "com.atproto.identity.signPlcOperation", ··· 16291 21622 }, 16292 21623 }, 16293 21624 }, 21625 + "ComAtprotoIdentityResolveIdentity": { 21626 + "lexicon": 1, 21627 + "id": "com.atproto.identity.resolveIdentity", 21628 + "defs": { 21629 + "main": { 21630 + "type": "query", 21631 + "description": 21632 + "Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).", 21633 + "parameters": { 21634 + "type": "params", 21635 + "required": [ 21636 + "identifier", 21637 + ], 21638 + "properties": { 21639 + "identifier": { 21640 + "type": "string", 21641 + "format": "at-identifier", 21642 + "description": "Handle or DID to resolve.", 21643 + }, 21644 + }, 21645 + }, 21646 + "output": { 21647 + "encoding": "application/json", 21648 + "schema": { 21649 + "type": "ref", 21650 + "ref": "lex:com.atproto.identity.defs#identityInfo", 21651 + }, 21652 + }, 21653 + "errors": [ 21654 + { 21655 + "name": "HandleNotFound", 21656 + "description": 21657 + "The resolution process confirmed that the handle does not resolve to any DID.", 21658 + }, 21659 + { 21660 + "name": "DidNotFound", 21661 + "description": 21662 + "The DID resolution process confirmed that there is no current DID.", 21663 + }, 21664 + { 21665 + "name": "DidDeactivated", 21666 + "description": 21667 + "The DID previously existed, but has been deactivated.", 21668 + }, 21669 + ], 21670 + }, 21671 + }, 21672 + }, 21673 + "ComAtprotoIdentityRefreshIdentity": { 21674 + "lexicon": 1, 21675 + "id": "com.atproto.identity.refreshIdentity", 21676 + "defs": { 21677 + "main": { 21678 + "type": "procedure", 21679 + "description": 21680 + "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.", 21681 + "input": { 21682 + "encoding": "application/json", 21683 + "schema": { 21684 + "type": "object", 21685 + "required": [ 21686 + "identifier", 21687 + ], 21688 + "properties": { 21689 + "identifier": { 21690 + "type": "string", 21691 + "format": "at-identifier", 21692 + }, 21693 + }, 21694 + }, 21695 + }, 21696 + "output": { 21697 + "encoding": "application/json", 21698 + "schema": { 21699 + "type": "ref", 21700 + "ref": "lex:com.atproto.identity.defs#identityInfo", 21701 + }, 21702 + }, 21703 + "errors": [ 21704 + { 21705 + "name": "HandleNotFound", 21706 + "description": 21707 + "The resolution process confirmed that the handle does not resolve to any DID.", 21708 + }, 21709 + { 21710 + "name": "DidNotFound", 21711 + "description": 21712 + "The DID resolution process confirmed that there is no current DID.", 21713 + }, 21714 + { 21715 + "name": "DidDeactivated", 21716 + "description": 21717 + "The DID previously existed, but has been deactivated.", 21718 + }, 21719 + ], 21720 + }, 21721 + }, 21722 + }, 16294 21723 "ComAtprotoIdentityResolveHandle": { 16295 21724 "lexicon": 1, 16296 21725 "id": "com.atproto.identity.resolveHandle", 16297 21726 "defs": { 16298 21727 "main": { 16299 21728 "type": "query", 16300 - "description": "Resolves a handle (domain name) to a DID.", 21729 + "description": 21730 + "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.", 16301 21731 "parameters": { 16302 21732 "type": "params", 16303 21733 "required": [ ··· 16326 21756 }, 16327 21757 }, 16328 21758 }, 21759 + "errors": [ 21760 + { 21761 + "name": "HandleNotFound", 21762 + "description": 21763 + "The resolution process confirmed that the handle does not resolve to any DID.", 21764 + }, 21765 + ], 16329 21766 }, 16330 21767 }, 16331 21768 }, ··· 16376 21813 }, 16377 21814 }, 16378 21815 }, 21816 + }, 21817 + }, 21818 + }, 21819 + "ComAtprotoIdentityResolveDid": { 21820 + "lexicon": 1, 21821 + "id": "com.atproto.identity.resolveDid", 21822 + "defs": { 21823 + "main": { 21824 + "type": "query", 21825 + "description": 21826 + "Resolves DID to DID document. Does not bi-directionally verify handle.", 21827 + "parameters": { 21828 + "type": "params", 21829 + "required": [ 21830 + "did", 21831 + ], 21832 + "properties": { 21833 + "did": { 21834 + "type": "string", 21835 + "format": "did", 21836 + "description": "DID to resolve.", 21837 + }, 21838 + }, 21839 + }, 21840 + "output": { 21841 + "encoding": "application/json", 21842 + "schema": { 21843 + "type": "object", 21844 + "required": [ 21845 + "didDoc", 21846 + ], 21847 + "properties": { 21848 + "didDoc": { 21849 + "type": "unknown", 21850 + "description": "The complete DID document for the identity.", 21851 + }, 21852 + }, 21853 + }, 21854 + }, 21855 + "errors": [ 21856 + { 21857 + "name": "DidNotFound", 21858 + "description": 21859 + "The DID resolution process confirmed that there is no current DID.", 21860 + }, 21861 + { 21862 + "name": "DidDeactivated", 21863 + "description": 21864 + "The DID previously existed, but has been deactivated.", 21865 + }, 21866 + ], 16379 21867 }, 16380 21868 }, 16381 21869 }, ··· 16778 22266 "type": "ref", 16779 22267 "ref": "lex:com.atproto.server.defs#inviteCode", 16780 22268 }, 22269 + }, 22270 + }, 22271 + }, 22272 + }, 22273 + }, 22274 + }, 22275 + }, 22276 + "ComAtprotoAdminUpdateAccountSigningKey": { 22277 + "lexicon": 1, 22278 + "id": "com.atproto.admin.updateAccountSigningKey", 22279 + "defs": { 22280 + "main": { 22281 + "type": "procedure", 22282 + "description": 22283 + "Administrative action to update an account's signing key in their Did document.", 22284 + "input": { 22285 + "encoding": "application/json", 22286 + "schema": { 22287 + "type": "object", 22288 + "required": [ 22289 + "did", 22290 + "signingKey", 22291 + ], 22292 + "properties": { 22293 + "did": { 22294 + "type": "string", 22295 + "format": "did", 22296 + }, 22297 + "signingKey": { 22298 + "type": "string", 22299 + "format": "did", 22300 + "description": "Did-key formatted public key", 16781 22301 }, 16782 22302 }, 16783 22303 }, ··· 18618 24138 }, 18619 24139 }, 18620 24140 }, 24141 + "ComAtprotoLexiconResolveLexicon": { 24142 + "lexicon": 1, 24143 + "id": "com.atproto.lexicon.resolveLexicon", 24144 + "defs": { 24145 + "main": { 24146 + "type": "query", 24147 + "description": "Resolves an atproto lexicon (NSID) to a schema.", 24148 + "parameters": { 24149 + "type": "params", 24150 + "properties": { 24151 + "nsid": { 24152 + "format": "nsid", 24153 + "type": "string", 24154 + "description": "The lexicon NSID to resolve.", 24155 + }, 24156 + }, 24157 + "required": [ 24158 + "nsid", 24159 + ], 24160 + }, 24161 + "output": { 24162 + "encoding": "application/json", 24163 + "schema": { 24164 + "type": "object", 24165 + "properties": { 24166 + "cid": { 24167 + "type": "string", 24168 + "format": "cid", 24169 + "description": "The CID of the lexicon schema record.", 24170 + }, 24171 + "schema": { 24172 + "type": "ref", 24173 + "ref": "lex:com.atproto.lexicon.schema#main", 24174 + "description": "The resolved lexicon schema record.", 24175 + }, 24176 + "uri": { 24177 + "type": "string", 24178 + "format": "at-uri", 24179 + "description": "The AT-URI of the lexicon schema record.", 24180 + }, 24181 + }, 24182 + "required": [ 24183 + "uri", 24184 + "cid", 24185 + "schema", 24186 + ], 24187 + }, 24188 + }, 24189 + "errors": [ 24190 + { 24191 + "description": "No lexicon was resolved for the NSID.", 24192 + "name": "LexiconNotFound", 24193 + }, 24194 + ], 24195 + }, 24196 + }, 24197 + }, 18621 24198 "ComAtprotoLexiconSchema": { 18622 24199 "lexicon": 1, 18623 24200 "id": "com.atproto.lexicon.schema", ··· 18758 24335 }, 18759 24336 "since": { 18760 24337 "type": "string", 24338 + "format": "tid", 18761 24339 "description": 18762 24340 "The revision ('rev') of the repo to create a diff from.", 18763 24341 }, ··· 18790 24368 "main": { 18791 24369 "type": "procedure", 18792 24370 "description": 18793 - "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.", 24371 + "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", 18794 24372 "input": { 18795 24373 "encoding": "application/json", 18796 24374 "schema": { ··· 18810 24388 }, 18811 24389 }, 18812 24390 }, 24391 + "ComAtprotoSyncDefs": { 24392 + "lexicon": 1, 24393 + "id": "com.atproto.sync.defs", 24394 + "defs": { 24395 + "hostStatus": { 24396 + "type": "string", 24397 + "knownValues": [ 24398 + "active", 24399 + "idle", 24400 + "offline", 24401 + "throttled", 24402 + "banned", 24403 + ], 24404 + }, 24405 + }, 24406 + }, 18813 24407 "ComAtprotoSyncRequestCrawl": { 18814 24408 "lexicon": 1, 18815 24409 "id": "com.atproto.sync.requestCrawl", ··· 18834 24428 }, 18835 24429 }, 18836 24430 }, 24431 + "errors": [ 24432 + { 24433 + "name": "HostBanned", 24434 + }, 24435 + ], 18837 24436 }, 18838 24437 }, 18839 24438 }, ··· 18858 24457 }, 18859 24458 "since": { 18860 24459 "type": "string", 24460 + "format": "tid", 18861 24461 "description": 18862 24462 "Optional revision of the repo to list blobs since.", 18863 24463 }, ··· 18946 24546 }, 18947 24547 "rev": { 18948 24548 "type": "string", 24549 + "format": "tid", 18949 24550 }, 18950 24551 }, 18951 24552 }, ··· 18990 24591 "type": "union", 18991 24592 "refs": [ 18992 24593 "lex:com.atproto.sync.subscribeRepos#commit", 24594 + "lex:com.atproto.sync.subscribeRepos#sync", 18993 24595 "lex:com.atproto.sync.subscribeRepos#identity", 18994 24596 "lex:com.atproto.sync.subscribeRepos#account", 18995 - "lex:com.atproto.sync.subscribeRepos#handle", 18996 - "lex:com.atproto.sync.subscribeRepos#migrate", 18997 - "lex:com.atproto.sync.subscribeRepos#tombstone", 18998 24597 "lex:com.atproto.sync.subscribeRepos#info", 18999 24598 ], 19000 24599 }, ··· 19028 24627 "time", 19029 24628 ], 19030 24629 "nullable": [ 19031 - "prev", 19032 24630 "since", 19033 24631 ], 19034 24632 "properties": { ··· 19043 24641 "tooBig": { 19044 24642 "type": "boolean", 19045 24643 "description": 19046 - "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.", 24644 + "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.", 19047 24645 }, 19048 24646 "repo": { 19049 24647 "type": "string", 19050 24648 "format": "did", 19051 - "description": "The repo this event comes from.", 24649 + "description": 24650 + "The repo this event comes from. Note that all other message types name this field 'did'.", 19052 24651 }, 19053 24652 "commit": { 19054 24653 "type": "cid-link", 19055 24654 "description": "Repo commit object CID.", 19056 24655 }, 19057 - "prev": { 19058 - "type": "cid-link", 19059 - "description": 19060 - "DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability.", 19061 - }, 19062 24656 "rev": { 19063 24657 "type": "string", 24658 + "format": "tid", 19064 24659 "description": 19065 24660 "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.", 19066 24661 }, 19067 24662 "since": { 19068 24663 "type": "string", 24664 + "format": "tid", 19069 24665 "description": 19070 24666 "The rev of the last emitted commit from this repo (if any).", 19071 24667 }, 19072 24668 "blocks": { 19073 24669 "type": "bytes", 19074 24670 "description": 19075 - "CAR file containing relevant blocks, as a diff since the previous repo state.", 19076 - "maxLength": 1000000, 24671 + "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.", 24672 + "maxLength": 2000000, 19077 24673 }, 19078 24674 "ops": { 19079 24675 "type": "array", ··· 19090 24686 "items": { 19091 24687 "type": "cid-link", 19092 24688 "description": 19093 - "List of new blobs (by CID) referenced by records in this commit.", 24689 + "DEPRECATED -- will soon always be empty. List of new blobs (by CID) referenced by records in this commit.", 19094 24690 }, 19095 24691 }, 24692 + "prevData": { 24693 + "type": "cid-link", 24694 + "description": 24695 + "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.", 24696 + }, 19096 24697 "time": { 19097 24698 "type": "string", 19098 24699 "format": "datetime", ··· 19101 24702 }, 19102 24703 }, 19103 24704 }, 19104 - "identity": { 24705 + "sync": { 19105 24706 "type": "object", 19106 24707 "description": 19107 - "Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache.", 24708 + "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.", 19108 24709 "required": [ 19109 24710 "seq", 19110 24711 "did", 24712 + "blocks", 24713 + "rev", 19111 24714 "time", 19112 24715 ], 19113 24716 "properties": { 19114 24717 "seq": { 19115 24718 "type": "integer", 24719 + "description": "The stream sequence number of this message.", 19116 24720 }, 19117 24721 "did": { 19118 24722 "type": "string", 19119 24723 "format": "did", 24724 + "description": 24725 + "The account this repo event corresponds to. Must match that in the commit object.", 19120 24726 }, 19121 - "time": { 24727 + "blocks": { 24728 + "type": "bytes", 24729 + "description": 24730 + "CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.", 24731 + "maxLength": 10000, 24732 + }, 24733 + "rev": { 19122 24734 "type": "string", 19123 - "format": "datetime", 24735 + "description": 24736 + "The rev of the commit. This value must match that in the commit object.", 19124 24737 }, 19125 - "handle": { 24738 + "time": { 19126 24739 "type": "string", 19127 - "format": "handle", 24740 + "format": "datetime", 19128 24741 "description": 19129 - "The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.", 24742 + "Timestamp of when this message was originally broadcast.", 19130 24743 }, 19131 24744 }, 19132 24745 }, 19133 - "account": { 24746 + "identity": { 19134 24747 "type": "object", 19135 24748 "description": 19136 - "Represents a change to an account's status on a host (eg, PDS or Relay). The semantics of this event are that the status is at the host which emitted the event, not necessarily that at the currently active PDS. Eg, a Relay takedown would emit a takedown with active=false, even if the PDS is still active.", 24749 + "Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache.", 19137 24750 "required": [ 19138 24751 "seq", 19139 24752 "did", 19140 24753 "time", 19141 - "active", 19142 24754 ], 19143 24755 "properties": { 19144 24756 "seq": { ··· 19152 24764 "type": "string", 19153 24765 "format": "datetime", 19154 24766 }, 19155 - "active": { 19156 - "type": "boolean", 19157 - "description": 19158 - "Indicates that the account has a repository which can be fetched from the host that emitted this event.", 19159 - }, 19160 - "status": { 19161 - "type": "string", 19162 - "description": 19163 - "If active=false, this optional field indicates a reason for why the account is not active.", 19164 - "knownValues": [ 19165 - "takendown", 19166 - "suspended", 19167 - "deleted", 19168 - "deactivated", 19169 - ], 19170 - }, 19171 - }, 19172 - }, 19173 - "handle": { 19174 - "type": "object", 19175 - "description": "DEPRECATED -- Use #identity event instead", 19176 - "required": [ 19177 - "seq", 19178 - "did", 19179 - "handle", 19180 - "time", 19181 - ], 19182 - "properties": { 19183 - "seq": { 19184 - "type": "integer", 19185 - }, 19186 - "did": { 19187 - "type": "string", 19188 - "format": "did", 19189 - }, 19190 24767 "handle": { 19191 24768 "type": "string", 19192 24769 "format": "handle", 19193 - }, 19194 - "time": { 19195 - "type": "string", 19196 - "format": "datetime", 24770 + "description": 24771 + "The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.", 19197 24772 }, 19198 24773 }, 19199 24774 }, 19200 - "migrate": { 24775 + "account": { 19201 24776 "type": "object", 19202 - "description": "DEPRECATED -- Use #account event instead", 24777 + "description": 24778 + "Represents a change to an account's status on a host (eg, PDS or Relay). The semantics of this event are that the status is at the host which emitted the event, not necessarily that at the currently active PDS. Eg, a Relay takedown would emit a takedown with active=false, even if the PDS is still active.", 19203 24779 "required": [ 19204 24780 "seq", 19205 24781 "did", 19206 - "migrateTo", 19207 24782 "time", 19208 - ], 19209 - "nullable": [ 19210 - "migrateTo", 24783 + "active", 19211 24784 ], 19212 24785 "properties": { 19213 24786 "seq": { ··· 19217 24790 "type": "string", 19218 24791 "format": "did", 19219 24792 }, 19220 - "migrateTo": { 19221 - "type": "string", 19222 - }, 19223 24793 "time": { 19224 24794 "type": "string", 19225 24795 "format": "datetime", 19226 24796 }, 19227 - }, 19228 - }, 19229 - "tombstone": { 19230 - "type": "object", 19231 - "description": "DEPRECATED -- Use #account event instead", 19232 - "required": [ 19233 - "seq", 19234 - "did", 19235 - "time", 19236 - ], 19237 - "properties": { 19238 - "seq": { 19239 - "type": "integer", 24797 + "active": { 24798 + "type": "boolean", 24799 + "description": 24800 + "Indicates that the account has a repository which can be fetched from the host that emitted this event.", 19240 24801 }, 19241 - "did": { 24802 + "status": { 19242 24803 "type": "string", 19243 - "format": "did", 19244 - }, 19245 - "time": { 19246 - "type": "string", 19247 - "format": "datetime", 24804 + "description": 24805 + "If active=false, this optional field indicates a reason for why the account is not active.", 24806 + "knownValues": [ 24807 + "takendown", 24808 + "suspended", 24809 + "deleted", 24810 + "deactivated", 24811 + "desynchronized", 24812 + "throttled", 24813 + ], 19248 24814 }, 19249 24815 }, 19250 24816 }, ··· 19293 24859 "description": 19294 24860 "For creates and updates, the new record CID. For deletions, null.", 19295 24861 }, 24862 + "prev": { 24863 + "type": "cid-link", 24864 + "description": 24865 + "For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.", 24866 + }, 19296 24867 }, 19297 24868 }, 19298 24869 }, ··· 19341 24912 "knownValues": [ 19342 24913 "takendown", 19343 24914 "suspended", 24915 + "deleted", 19344 24916 "deactivated", 24917 + "desynchronized", 24918 + "throttled", 19345 24919 ], 19346 24920 }, 19347 24921 "rev": { 19348 24922 "type": "string", 24923 + "format": "tid", 19349 24924 "description": 19350 24925 "Optional field, the current rev of the repo, if active=true", 19351 24926 }, ··· 19388 24963 "rkey": { 19389 24964 "type": "string", 19390 24965 "description": "Record Key", 19391 - }, 19392 - "commit": { 19393 - "type": "string", 19394 - "format": "cid", 19395 - "description": 19396 - "DEPRECATED: referenced a repo commit by CID, and retrieved record as of that commit", 24966 + "format": "record-key", 19397 24967 }, 19398 24968 }, 19399 24969 }, ··· 19420 24990 }, 19421 24991 }, 19422 24992 }, 24993 + "ComAtprotoSyncListHosts": { 24994 + "lexicon": 1, 24995 + "id": "com.atproto.sync.listHosts", 24996 + "defs": { 24997 + "main": { 24998 + "type": "query", 24999 + "description": 25000 + "Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays.", 25001 + "parameters": { 25002 + "type": "params", 25003 + "properties": { 25004 + "limit": { 25005 + "type": "integer", 25006 + "minimum": 1, 25007 + "maximum": 1000, 25008 + "default": 200, 25009 + }, 25010 + "cursor": { 25011 + "type": "string", 25012 + }, 25013 + }, 25014 + }, 25015 + "output": { 25016 + "encoding": "application/json", 25017 + "schema": { 25018 + "type": "object", 25019 + "required": [ 25020 + "hosts", 25021 + ], 25022 + "properties": { 25023 + "cursor": { 25024 + "type": "string", 25025 + }, 25026 + "hosts": { 25027 + "type": "array", 25028 + "items": { 25029 + "type": "ref", 25030 + "ref": "lex:com.atproto.sync.listHosts#host", 25031 + }, 25032 + "description": 25033 + "Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first.", 25034 + }, 25035 + }, 25036 + }, 25037 + }, 25038 + }, 25039 + "host": { 25040 + "type": "object", 25041 + "required": [ 25042 + "hostname", 25043 + ], 25044 + "properties": { 25045 + "hostname": { 25046 + "type": "string", 25047 + "description": "hostname of server; not a URL (no scheme)", 25048 + }, 25049 + "seq": { 25050 + "type": "integer", 25051 + "description": 25052 + "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).", 25053 + }, 25054 + "accountCount": { 25055 + "type": "integer", 25056 + }, 25057 + "status": { 25058 + "type": "ref", 25059 + "ref": "lex:com.atproto.sync.defs#hostStatus", 25060 + }, 25061 + }, 25062 + }, 25063 + }, 25064 + }, 19423 25065 "ComAtprotoSyncListRepos": { 19424 25066 "lexicon": 1, 19425 25067 "id": "com.atproto.sync.listRepos", ··· 19483 25125 }, 19484 25126 "rev": { 19485 25127 "type": "string", 25128 + "format": "tid", 19486 25129 }, 19487 25130 "active": { 19488 25131 "type": "boolean", ··· 19494 25137 "knownValues": [ 19495 25138 "takendown", 19496 25139 "suspended", 25140 + "deleted", 19497 25141 "deactivated", 25142 + "desynchronized", 25143 + "throttled", 19498 25144 ], 19499 25145 }, 19500 25146 }, 19501 25147 }, 19502 25148 }, 19503 25149 }, 25150 + "ComAtprotoSyncGetHostStatus": { 25151 + "lexicon": 1, 25152 + "id": "com.atproto.sync.getHostStatus", 25153 + "defs": { 25154 + "main": { 25155 + "type": "query", 25156 + "description": 25157 + "Returns information about a specified upstream host, as consumed by the server. Implemented by relays.", 25158 + "parameters": { 25159 + "type": "params", 25160 + "required": [ 25161 + "hostname", 25162 + ], 25163 + "properties": { 25164 + "hostname": { 25165 + "type": "string", 25166 + "description": 25167 + "Hostname of the host (eg, PDS or relay) being queried.", 25168 + }, 25169 + }, 25170 + }, 25171 + "output": { 25172 + "encoding": "application/json", 25173 + "schema": { 25174 + "type": "object", 25175 + "required": [ 25176 + "hostname", 25177 + ], 25178 + "properties": { 25179 + "hostname": { 25180 + "type": "string", 25181 + }, 25182 + "seq": { 25183 + "type": "integer", 25184 + "description": 25185 + "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).", 25186 + }, 25187 + "accountCount": { 25188 + "type": "integer", 25189 + "description": 25190 + "Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts.", 25191 + }, 25192 + "status": { 25193 + "type": "ref", 25194 + "ref": "lex:com.atproto.sync.defs#hostStatus", 25195 + }, 25196 + }, 25197 + }, 25198 + }, 25199 + "errors": [ 25200 + { 25201 + "name": "HostNotFound", 25202 + }, 25203 + ], 25204 + }, 25205 + }, 25206 + }, 19504 25207 "ComAtprotoSyncGetBlocks": { 19505 25208 "lexicon": 1, 19506 25209 "id": "com.atproto.sync.getBlocks", ··· 19688 25391 }, 19689 25392 "rev": { 19690 25393 "type": "string", 25394 + "format": "tid", 19691 25395 }, 19692 25396 }, 19693 25397 }, ··· 19787 25491 }, 19788 25492 "rkey": { 19789 25493 "type": "string", 25494 + "format": "record-key", 19790 25495 "description": "The Record Key.", 19791 25496 "maxLength": 512, 19792 25497 }, ··· 19880 25585 }, 19881 25586 "rkey": { 19882 25587 "type": "string", 25588 + "format": "record-key", 19883 25589 "description": "The Record Key.", 19884 25590 }, 19885 25591 "swapRecord": { ··· 19952 25658 }, 19953 25659 "rkey": { 19954 25660 "type": "string", 25661 + "format": "record-key", 19955 25662 "description": "The Record Key.", 19956 25663 "maxLength": 512, 19957 25664 }, ··· 20292 25999 "rkey": { 20293 26000 "type": "string", 20294 26001 "maxLength": 512, 26002 + "format": "record-key", 26003 + "description": 26004 + "NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility.", 20295 26005 }, 20296 26006 "value": { 20297 26007 "type": "unknown", ··· 20313 26023 }, 20314 26024 "rkey": { 20315 26025 "type": "string", 26026 + "format": "record-key", 20316 26027 }, 20317 26028 "value": { 20318 26029 "type": "unknown", ··· 20333 26044 }, 20334 26045 "rkey": { 20335 26046 "type": "string", 26047 + "format": "record-key", 20336 26048 }, 20337 26049 }, 20338 26050 }, ··· 20426 26138 "cursor": { 20427 26139 "type": "string", 20428 26140 }, 20429 - "rkeyStart": { 20430 - "type": "string", 20431 - "description": 20432 - "DEPRECATED: The lowest sort-ordered rkey to start from (exclusive)", 20433 - }, 20434 - "rkeyEnd": { 20435 - "type": "string", 20436 - "description": 20437 - "DEPRECATED: The highest sort-ordered rkey to stop at (exclusive)", 20438 - }, 20439 26141 "reverse": { 20440 26142 "type": "boolean", 20441 26143 "description": ··· 20502 26204 "com.atproto.moderation.defs#reasonRude", 20503 26205 "com.atproto.moderation.defs#reasonOther", 20504 26206 "com.atproto.moderation.defs#reasonAppeal", 26207 + "tools.ozone.report.defs#reasonAppeal", 26208 + "tools.ozone.report.defs#reasonOther", 26209 + "tools.ozone.report.defs#reasonViolenceAnimal", 26210 + "tools.ozone.report.defs#reasonViolenceThreats", 26211 + "tools.ozone.report.defs#reasonViolenceGraphicContent", 26212 + "tools.ozone.report.defs#reasonViolenceGlorification", 26213 + "tools.ozone.report.defs#reasonViolenceExtremistContent", 26214 + "tools.ozone.report.defs#reasonViolenceTrafficking", 26215 + "tools.ozone.report.defs#reasonViolenceOther", 26216 + "tools.ozone.report.defs#reasonSexualAbuseContent", 26217 + "tools.ozone.report.defs#reasonSexualNCII", 26218 + "tools.ozone.report.defs#reasonSexualDeepfake", 26219 + "tools.ozone.report.defs#reasonSexualAnimal", 26220 + "tools.ozone.report.defs#reasonSexualUnlabeled", 26221 + "tools.ozone.report.defs#reasonSexualOther", 26222 + "tools.ozone.report.defs#reasonChildSafetyCSAM", 26223 + "tools.ozone.report.defs#reasonChildSafetyGroom", 26224 + "tools.ozone.report.defs#reasonChildSafetyPrivacy", 26225 + "tools.ozone.report.defs#reasonChildSafetyHarassment", 26226 + "tools.ozone.report.defs#reasonChildSafetyOther", 26227 + "tools.ozone.report.defs#reasonHarassmentTroll", 26228 + "tools.ozone.report.defs#reasonHarassmentTargeted", 26229 + "tools.ozone.report.defs#reasonHarassmentHateSpeech", 26230 + "tools.ozone.report.defs#reasonHarassmentDoxxing", 26231 + "tools.ozone.report.defs#reasonHarassmentOther", 26232 + "tools.ozone.report.defs#reasonMisleadingBot", 26233 + "tools.ozone.report.defs#reasonMisleadingImpersonation", 26234 + "tools.ozone.report.defs#reasonMisleadingSpam", 26235 + "tools.ozone.report.defs#reasonMisleadingScam", 26236 + "tools.ozone.report.defs#reasonMisleadingElections", 26237 + "tools.ozone.report.defs#reasonMisleadingOther", 26238 + "tools.ozone.report.defs#reasonRuleSiteSecurity", 26239 + "tools.ozone.report.defs#reasonRuleProhibitedSales", 26240 + "tools.ozone.report.defs#reasonRuleBanEvasion", 26241 + "tools.ozone.report.defs#reasonRuleOther", 26242 + "tools.ozone.report.defs#reasonSelfHarmContent", 26243 + "tools.ozone.report.defs#reasonSelfHarmED", 26244 + "tools.ozone.report.defs#reasonSelfHarmStunts", 26245 + "tools.ozone.report.defs#reasonSelfHarmSubstances", 26246 + "tools.ozone.report.defs#reasonSelfHarmOther", 20505 26247 ], 20506 26248 }, 20507 26249 "reasonSpam": { 20508 26250 "type": "token", 20509 - "description": "Spam: frequent unwanted promotion, replies, mentions", 26251 + "description": 26252 + "Spam: frequent unwanted promotion, replies, mentions. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingSpam`.", 20510 26253 }, 20511 26254 "reasonViolation": { 20512 26255 "type": "token", 20513 26256 "description": 20514 - "Direct violation of server rules, laws, terms of service", 26257 + "Direct violation of server rules, laws, terms of service. Prefer new lexicon definition `tools.ozone.report.defs#reasonRuleOther`.", 20515 26258 }, 20516 26259 "reasonMisleading": { 20517 26260 "type": "token", 20518 - "description": "Misleading identity, affiliation, or content", 26261 + "description": 26262 + "Misleading identity, affiliation, or content. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingOther`.", 20519 26263 }, 20520 26264 "reasonSexual": { 20521 26265 "type": "token", 20522 - "description": "Unwanted or mislabeled sexual content", 26266 + "description": 26267 + "Unwanted or mislabeled sexual content. Prefer new lexicon definition `tools.ozone.report.defs#reasonSexualUnlabeled`.", 20523 26268 }, 20524 26269 "reasonRude": { 20525 26270 "type": "token", 20526 26271 "description": 20527 - "Rude, harassing, explicit, or otherwise unwelcoming behavior", 26272 + "Rude, harassing, explicit, or otherwise unwelcoming behavior. Prefer new lexicon definition `tools.ozone.report.defs#reasonHarassmentOther`.", 20528 26273 }, 20529 26274 "reasonOther": { 20530 26275 "type": "token", 20531 26276 "description": 20532 - "Other: reports not falling under another report category", 26277 + "Reports not falling under another report category. Prefer new lexicon definition `tools.ozone.report.defs#reasonOther`.", 20533 26278 }, 20534 26279 "reasonAppeal": { 20535 26280 "type": "token", 20536 - "description": "Appeal: appeal a previously taken moderation action", 26281 + "description": "Appeal a previously taken moderation action", 20537 26282 }, 20538 26283 "subjectType": { 20539 26284 "type": "string", ··· 20584 26329 "lex:com.atproto.repo.strongRef", 20585 26330 ], 20586 26331 }, 26332 + "modTool": { 26333 + "type": "ref", 26334 + "ref": "lex:com.atproto.moderation.createReport#modTool", 26335 + }, 20587 26336 }, 20588 26337 }, 20589 26338 }, ··· 20630 26379 }, 20631 26380 }, 20632 26381 }, 26382 + "modTool": { 26383 + "type": "object", 26384 + "description": 26385 + "Moderation tool information for tracing the source of the action", 26386 + "required": [ 26387 + "name", 26388 + ], 26389 + "properties": { 26390 + "name": { 26391 + "type": "string", 26392 + "description": 26393 + "Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome')", 26394 + }, 26395 + "meta": { 26396 + "type": "unknown", 26397 + "description": "Additional arbitrary metadata about the source", 26398 + }, 26399 + }, 26400 + }, 20633 26401 }, 20634 26402 }, 20635 26403 } as Record<string, LexiconDoc>; ··· 20673 26441 ToolsOzoneSignatureFindRelatedAccounts: 20674 26442 "tools.ozone.signature.findRelatedAccounts", 20675 26443 ToolsOzoneServerGetConfig: "tools.ozone.server.getConfig", 26444 + ToolsOzoneVerificationRevokeVerifications: 26445 + "tools.ozone.verification.revokeVerifications", 26446 + ToolsOzoneVerificationDefs: "tools.ozone.verification.defs", 26447 + ToolsOzoneVerificationGrantVerifications: 26448 + "tools.ozone.verification.grantVerifications", 26449 + ToolsOzoneVerificationListVerifications: 26450 + "tools.ozone.verification.listVerifications", 26451 + ToolsOzoneSafelinkDefs: "tools.ozone.safelink.defs", 26452 + ToolsOzoneSafelinkAddRule: "tools.ozone.safelink.addRule", 26453 + ToolsOzoneSafelinkRemoveRule: "tools.ozone.safelink.removeRule", 26454 + ToolsOzoneSafelinkUpdateRule: "tools.ozone.safelink.updateRule", 26455 + ToolsOzoneSafelinkQueryEvents: "tools.ozone.safelink.queryEvents", 26456 + ToolsOzoneSafelinkQueryRules: "tools.ozone.safelink.queryRules", 20676 26457 ToolsOzoneTeamListMembers: "tools.ozone.team.listMembers", 20677 26458 ToolsOzoneTeamDefs: "tools.ozone.team.defs", 20678 26459 ToolsOzoneTeamDeleteMember: "tools.ozone.team.deleteMember", 20679 26460 ToolsOzoneTeamUpdateMember: "tools.ozone.team.updateMember", 20680 26461 ToolsOzoneTeamAddMember: "tools.ozone.team.addMember", 26462 + ToolsOzoneHostingGetAccountHistory: "tools.ozone.hosting.getAccountHistory", 26463 + ToolsOzoneReportDefs: "tools.ozone.report.defs", 20681 26464 ToolsOzoneCommunicationDefs: "tools.ozone.communication.defs", 20682 26465 ToolsOzoneCommunicationUpdateTemplate: 20683 26466 "tools.ozone.communication.updateTemplate", ··· 20700 26483 ToolsOzoneSettingUpsertOption: "tools.ozone.setting.upsertOption", 20701 26484 ToolsOzoneModerationGetReporterStats: 20702 26485 "tools.ozone.moderation.getReporterStats", 26486 + ToolsOzoneModerationCancelScheduledActions: 26487 + "tools.ozone.moderation.cancelScheduledActions", 26488 + ToolsOzoneModerationListScheduledActions: 26489 + "tools.ozone.moderation.listScheduledActions", 20703 26490 ToolsOzoneModerationQueryStatuses: "tools.ozone.moderation.queryStatuses", 20704 26491 ToolsOzoneModerationGetRepo: "tools.ozone.moderation.getRepo", 20705 26492 ToolsOzoneModerationDefs: "tools.ozone.moderation.defs", 26493 + ToolsOzoneModerationGetSubjects: "tools.ozone.moderation.getSubjects", 20706 26494 ToolsOzoneModerationGetRecords: "tools.ozone.moderation.getRecords", 26495 + ToolsOzoneModerationScheduleAction: "tools.ozone.moderation.scheduleAction", 20707 26496 ToolsOzoneModerationGetEvent: "tools.ozone.moderation.getEvent", 20708 26497 ToolsOzoneModerationQueryEvents: "tools.ozone.moderation.queryEvents", 20709 26498 ToolsOzoneModerationGetRecord: "tools.ozone.moderation.getRecord", 20710 26499 ToolsOzoneModerationEmitEvent: "tools.ozone.moderation.emitEvent", 20711 26500 ToolsOzoneModerationSearchRepos: "tools.ozone.moderation.searchRepos", 26501 + ToolsOzoneModerationGetAccountTimeline: 26502 + "tools.ozone.moderation.getAccountTimeline", 20712 26503 ToolsOzoneModerationGetRepos: "tools.ozone.moderation.getRepos", 20713 26504 AppBskyVideoUploadVideo: "app.bsky.video.uploadVideo", 20714 26505 AppBskyVideoDefs: "app.bsky.video.defs", 20715 26506 AppBskyVideoGetJobStatus: "app.bsky.video.getJobStatus", 20716 26507 AppBskyVideoGetUploadLimits: "app.bsky.video.getUploadLimits", 26508 + AppBskyBookmarkDefs: "app.bsky.bookmark.defs", 26509 + AppBskyBookmarkDeleteBookmark: "app.bsky.bookmark.deleteBookmark", 26510 + AppBskyBookmarkGetBookmarks: "app.bsky.bookmark.getBookmarks", 26511 + AppBskyBookmarkCreateBookmark: "app.bsky.bookmark.createBookmark", 20717 26512 AppBskyEmbedDefs: "app.bsky.embed.defs", 20718 26513 AppBskyEmbedRecord: "app.bsky.embed.record", 20719 26514 AppBskyEmbedImages: "app.bsky.embed.images", 20720 26515 AppBskyEmbedRecordWithMedia: "app.bsky.embed.recordWithMedia", 20721 26516 AppBskyEmbedVideo: "app.bsky.embed.video", 20722 26517 AppBskyEmbedExternal: "app.bsky.embed.external", 26518 + AppBskyNotificationDefs: "app.bsky.notification.defs", 20723 26519 AppBskyNotificationRegisterPush: "app.bsky.notification.registerPush", 20724 26520 AppBskyNotificationPutPreferences: "app.bsky.notification.putPreferences", 26521 + AppBskyNotificationPutActivitySubscription: 26522 + "app.bsky.notification.putActivitySubscription", 26523 + AppBskyNotificationDeclaration: "app.bsky.notification.declaration", 26524 + AppBskyNotificationPutPreferencesV2: "app.bsky.notification.putPreferencesV2", 20725 26525 AppBskyNotificationUpdateSeen: "app.bsky.notification.updateSeen", 26526 + AppBskyNotificationListActivitySubscriptions: 26527 + "app.bsky.notification.listActivitySubscriptions", 26528 + AppBskyNotificationUnregisterPush: "app.bsky.notification.unregisterPush", 26529 + AppBskyNotificationGetPreferences: "app.bsky.notification.getPreferences", 20726 26530 AppBskyNotificationListNotifications: 20727 26531 "app.bsky.notification.listNotifications", 20728 26532 AppBskyNotificationGetUnreadCount: "app.bsky.notification.getUnreadCount", 26533 + AppBskyUnspeccedGetSuggestedFeedsSkeleton: 26534 + "app.bsky.unspecced.getSuggestedFeedsSkeleton", 20729 26535 AppBskyUnspeccedSearchStarterPacksSkeleton: 20730 26536 "app.bsky.unspecced.searchStarterPacksSkeleton", 20731 26537 AppBskyUnspeccedDefs: "app.bsky.unspecced.defs", 26538 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton: 26539 + "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton", 26540 + AppBskyUnspeccedGetSuggestedUsers: "app.bsky.unspecced.getSuggestedUsers", 26541 + AppBskyUnspeccedGetPostThreadOtherV2: 26542 + "app.bsky.unspecced.getPostThreadOtherV2", 26543 + AppBskyUnspeccedGetSuggestedStarterPacks: 26544 + "app.bsky.unspecced.getSuggestedStarterPacks", 26545 + AppBskyUnspeccedGetSuggestedStarterPacksSkeleton: 26546 + "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", 26547 + AppBskyUnspeccedGetOnboardingSuggestedStarterPacks: 26548 + "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", 26549 + AppBskyUnspeccedGetSuggestedUsersSkeleton: 26550 + "app.bsky.unspecced.getSuggestedUsersSkeleton", 26551 + AppBskyUnspeccedGetPostThreadV2: "app.bsky.unspecced.getPostThreadV2", 26552 + AppBskyUnspeccedGetTrends: "app.bsky.unspecced.getTrends", 20732 26553 AppBskyUnspeccedSearchActorsSkeleton: 20733 26554 "app.bsky.unspecced.searchActorsSkeleton", 20734 26555 AppBskyUnspeccedGetSuggestionsSkeleton: 20735 26556 "app.bsky.unspecced.getSuggestionsSkeleton", 20736 26557 AppBskyUnspeccedSearchPostsSkeleton: "app.bsky.unspecced.searchPostsSkeleton", 26558 + AppBskyUnspeccedGetAgeAssuranceState: 26559 + "app.bsky.unspecced.getAgeAssuranceState", 20737 26560 AppBskyUnspeccedGetPopularFeedGenerators: 20738 26561 "app.bsky.unspecced.getPopularFeedGenerators", 26562 + AppBskyUnspeccedInitAgeAssurance: "app.bsky.unspecced.initAgeAssurance", 20739 26563 AppBskyUnspeccedGetTrendingTopics: "app.bsky.unspecced.getTrendingTopics", 20740 26564 AppBskyUnspeccedGetTaggedSuggestions: 20741 26565 "app.bsky.unspecced.getTaggedSuggestions", 26566 + AppBskyUnspeccedGetSuggestedFeeds: "app.bsky.unspecced.getSuggestedFeeds", 26567 + AppBskyUnspeccedGetTrendsSkeleton: "app.bsky.unspecced.getTrendsSkeleton", 20742 26568 AppBskyUnspeccedGetConfig: "app.bsky.unspecced.getConfig", 20743 26569 AppBskyGraphGetStarterPacks: "app.bsky.graph.getStarterPacks", 20744 26570 AppBskyGraphGetSuggestedFollowsByActor: 20745 26571 "app.bsky.graph.getSuggestedFollowsByActor", 20746 26572 AppBskyGraphBlock: "app.bsky.graph.block", 26573 + AppBskyGraphGetStarterPacksWithMembership: 26574 + "app.bsky.graph.getStarterPacksWithMembership", 20747 26575 AppBskyGraphFollow: "app.bsky.graph.follow", 20748 26576 AppBskyGraphDefs: "app.bsky.graph.defs", 26577 + AppBskyGraphGetListsWithMembership: "app.bsky.graph.getListsWithMembership", 20749 26578 AppBskyGraphUnmuteActorList: "app.bsky.graph.unmuteActorList", 20750 26579 AppBskyGraphGetListBlocks: "app.bsky.graph.getListBlocks", 20751 26580 AppBskyGraphListblock: "app.bsky.graph.listblock", ··· 20763 26592 AppBskyGraphListitem: "app.bsky.graph.listitem", 20764 26593 AppBskyGraphList: "app.bsky.graph.list", 20765 26594 AppBskyGraphGetKnownFollowers: "app.bsky.graph.getKnownFollowers", 26595 + AppBskyGraphVerification: "app.bsky.graph.verification", 20766 26596 AppBskyGraphGetListMutes: "app.bsky.graph.getListMutes", 20767 26597 AppBskyGraphGetFollows: "app.bsky.graph.getFollows", 20768 26598 AppBskyGraphGetBlocks: "app.bsky.graph.getBlocks", ··· 20795 26625 AppBskyFeedGetActorFeeds: "app.bsky.feed.getActorFeeds", 20796 26626 AppBskyFeedPost: "app.bsky.feed.post", 20797 26627 AppBskyRichtextFacet: "app.bsky.richtext.facet", 26628 + AppBskyAgeassuranceBegin: "app.bsky.ageassurance.begin", 26629 + AppBskyAgeassuranceDefs: "app.bsky.ageassurance.defs", 26630 + AppBskyAgeassuranceGetState: "app.bsky.ageassurance.getState", 26631 + AppBskyAgeassuranceGetConfig: "app.bsky.ageassurance.getConfig", 20798 26632 AppBskyActorSearchActorsTypeahead: "app.bsky.actor.searchActorsTypeahead", 20799 26633 AppBskyActorDefs: "app.bsky.actor.defs", 20800 26634 AppBskyActorPutPreferences: "app.bsky.actor.putPreferences", ··· 20802 26636 AppBskyActorGetSuggestions: "app.bsky.actor.getSuggestions", 20803 26637 AppBskyActorSearchActors: "app.bsky.actor.searchActors", 20804 26638 AppBskyActorGetProfiles: "app.bsky.actor.getProfiles", 26639 + AppBskyActorStatus: "app.bsky.actor.status", 20805 26640 AppBskyActorGetPreferences: "app.bsky.actor.getPreferences", 20806 26641 AppBskyActorProfile: "app.bsky.actor.profile", 20807 26642 AppBskyLabelerDefs: "app.bsky.labeler.defs", ··· 20814 26649 ChatBskyConvoGetLog: "chat.bsky.convo.getLog", 20815 26650 ChatBskyConvoSendMessage: "chat.bsky.convo.sendMessage", 20816 26651 ChatBskyConvoLeaveConvo: "chat.bsky.convo.leaveConvo", 26652 + ChatBskyConvoAddReaction: "chat.bsky.convo.addReaction", 20817 26653 ChatBskyConvoAcceptConvo: "chat.bsky.convo.acceptConvo", 20818 26654 ChatBskyConvoMuteConvo: "chat.bsky.convo.muteConvo", 20819 26655 ChatBskyConvoDeleteMessageForSelf: "chat.bsky.convo.deleteMessageForSelf", 26656 + ChatBskyConvoRemoveReaction: "chat.bsky.convo.removeReaction", 20820 26657 ChatBskyConvoUpdateRead: "chat.bsky.convo.updateRead", 20821 26658 ChatBskyConvoUpdateAllRead: "chat.bsky.convo.updateAllRead", 20822 26659 ChatBskyConvoGetConvo: "chat.bsky.convo.getConvo", ··· 20905 26742 SoSprkMediaImages: "so.sprk.media.images", 20906 26743 SoSprkMediaVideo: "so.sprk.media.video", 20907 26744 SoSprkMediaImage: "so.sprk.media.image", 26745 + ComAtprotoTempDereferenceScope: "com.atproto.temp.dereferenceScope", 20908 26746 ComAtprotoTempAddReservedHandle: "com.atproto.temp.addReservedHandle", 20909 26747 ComAtprotoTempCheckSignupQueue: "com.atproto.temp.checkSignupQueue", 26748 + ComAtprotoTempCheckHandleAvailability: 26749 + "com.atproto.temp.checkHandleAvailability", 20910 26750 ComAtprotoTempRequestPhoneVerification: 20911 26751 "com.atproto.temp.requestPhoneVerification", 26752 + ComAtprotoTempRevokeAccountCredentials: 26753 + "com.atproto.temp.revokeAccountCredentials", 20912 26754 ComAtprotoTempFetchLabels: "com.atproto.temp.fetchLabels", 20913 26755 ComAtprotoIdentityUpdateHandle: "com.atproto.identity.updateHandle", 26756 + ComAtprotoIdentityDefs: "com.atproto.identity.defs", 20914 26757 ComAtprotoIdentitySignPlcOperation: "com.atproto.identity.signPlcOperation", 20915 26758 ComAtprotoIdentitySubmitPlcOperation: 20916 26759 "com.atproto.identity.submitPlcOperation", 26760 + ComAtprotoIdentityResolveIdentity: "com.atproto.identity.resolveIdentity", 26761 + ComAtprotoIdentityRefreshIdentity: "com.atproto.identity.refreshIdentity", 20917 26762 ComAtprotoIdentityResolveHandle: "com.atproto.identity.resolveHandle", 20918 26763 ComAtprotoIdentityRequestPlcOperationSignature: 20919 26764 "com.atproto.identity.requestPlcOperationSignature", 20920 26765 ComAtprotoIdentityGetRecommendedDidCredentials: 20921 26766 "com.atproto.identity.getRecommendedDidCredentials", 26767 + ComAtprotoIdentityResolveDid: "com.atproto.identity.resolveDid", 20922 26768 ComAtprotoAdminUpdateAccountEmail: "com.atproto.admin.updateAccountEmail", 20923 26769 ComAtprotoAdminGetAccountInfo: "com.atproto.admin.getAccountInfo", 20924 26770 ComAtprotoAdminGetSubjectStatus: "com.atproto.admin.getSubjectStatus", ··· 20928 26774 "com.atproto.admin.updateAccountPassword", 20929 26775 ComAtprotoAdminUpdateAccountHandle: "com.atproto.admin.updateAccountHandle", 20930 26776 ComAtprotoAdminGetInviteCodes: "com.atproto.admin.getInviteCodes", 26777 + ComAtprotoAdminUpdateAccountSigningKey: 26778 + "com.atproto.admin.updateAccountSigningKey", 20931 26779 ComAtprotoAdminEnableAccountInvites: "com.atproto.admin.enableAccountInvites", 20932 26780 ComAtprotoAdminDisableAccountInvites: 20933 26781 "com.atproto.admin.disableAccountInvites", ··· 20969 26817 ComAtprotoServerCreateAccount: "com.atproto.server.createAccount", 20970 26818 ComAtprotoServerDeleteAccount: "com.atproto.server.deleteAccount", 20971 26819 ComAtprotoServerCreateInviteCode: "com.atproto.server.createInviteCode", 26820 + ComAtprotoLexiconResolveLexicon: "com.atproto.lexicon.resolveLexicon", 20972 26821 ComAtprotoLexiconSchema: "com.atproto.lexicon.schema", 20973 26822 ComAtprotoSyncGetHead: "com.atproto.sync.getHead", 20974 26823 ComAtprotoSyncGetBlob: "com.atproto.sync.getBlob", 20975 26824 ComAtprotoSyncGetRepo: "com.atproto.sync.getRepo", 20976 26825 ComAtprotoSyncNotifyOfUpdate: "com.atproto.sync.notifyOfUpdate", 26826 + ComAtprotoSyncDefs: "com.atproto.sync.defs", 20977 26827 ComAtprotoSyncRequestCrawl: "com.atproto.sync.requestCrawl", 20978 26828 ComAtprotoSyncListBlobs: "com.atproto.sync.listBlobs", 20979 26829 ComAtprotoSyncGetLatestCommit: "com.atproto.sync.getLatestCommit", 20980 26830 ComAtprotoSyncSubscribeRepos: "com.atproto.sync.subscribeRepos", 20981 26831 ComAtprotoSyncGetRepoStatus: "com.atproto.sync.getRepoStatus", 20982 26832 ComAtprotoSyncGetRecord: "com.atproto.sync.getRecord", 26833 + ComAtprotoSyncListHosts: "com.atproto.sync.listHosts", 20983 26834 ComAtprotoSyncListRepos: "com.atproto.sync.listRepos", 26835 + ComAtprotoSyncGetHostStatus: "com.atproto.sync.getHostStatus", 20984 26836 ComAtprotoSyncGetBlocks: "com.atproto.sync.getBlocks", 20985 26837 ComAtprotoSyncListReposByCollection: "com.atproto.sync.listReposByCollection", 20986 26838 ComAtprotoSyncGetCheckout: "com.atproto.sync.getCheckout",
+139 -4
lex/types/app/bsky/actor/defs.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 8 7 import type * as AppBskyGraphDefs from "../graph/defs.ts"; 9 8 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 9 + import type * as AppBskyNotificationDefs from "../notification/defs.ts"; 10 10 import type * as AppBskyFeedThreadgate from "../feed/threadgate.ts"; 11 11 import type * as AppBskyFeedPostgate from "../feed/postgate.ts"; 12 + import type * as AppBskyEmbedExternal from "../embed/external.ts"; 12 13 13 14 const is$typed = _is$typed, validate = _validate; 14 15 const id = "app.bsky.actor.defs"; ··· 18 19 did: string; 19 20 handle: string; 20 21 displayName?: string; 22 + pronouns?: string; 21 23 avatar?: string; 22 24 associated?: ProfileAssociated; 23 25 viewer?: ViewerState; 24 26 labels?: (ComAtprotoLabelDefs.Label)[]; 25 27 createdAt?: string; 28 + verification?: VerificationState; 29 + status?: StatusView; 30 + /** Debug information for internal development */ 31 + debug?: { [_ in string]: unknown }; 26 32 } 27 33 28 34 const hashProfileViewBasic = "profileViewBasic"; ··· 40 46 did: string; 41 47 handle: string; 42 48 displayName?: string; 49 + pronouns?: string; 43 50 description?: string; 44 51 avatar?: string; 45 52 associated?: ProfileAssociated; ··· 47 54 createdAt?: string; 48 55 viewer?: ViewerState; 49 56 labels?: (ComAtprotoLabelDefs.Label)[]; 57 + verification?: VerificationState; 58 + status?: StatusView; 59 + /** Debug information for internal development */ 60 + debug?: { [_ in string]: unknown }; 50 61 } 51 62 52 63 const hashProfileView = "profileView"; ··· 65 76 handle: string; 66 77 displayName?: string; 67 78 description?: string; 79 + pronouns?: string; 80 + website?: string; 68 81 avatar?: string; 69 82 banner?: string; 70 83 followersCount?: number; ··· 77 90 viewer?: ViewerState; 78 91 labels?: (ComAtprotoLabelDefs.Label)[]; 79 92 pinnedPost?: ComAtprotoRepoStrongRef.Main; 93 + verification?: VerificationState; 94 + status?: StatusView; 95 + /** Debug information for internal development */ 96 + debug?: { [_ in string]: unknown }; 80 97 } 81 98 82 99 const hashProfileViewDetailed = "profileViewDetailed"; ··· 96 113 starterPacks?: number; 97 114 labeler?: boolean; 98 115 chat?: ProfileAssociatedChat; 116 + activitySubscription?: ProfileAssociatedActivitySubscription; 99 117 } 100 118 101 119 const hashProfileAssociated = "profileAssociated"; ··· 127 145 return validate<ProfileAssociatedChat & V>(v, id, hashProfileAssociatedChat); 128 146 } 129 147 148 + export interface ProfileAssociatedActivitySubscription { 149 + $type?: "app.bsky.actor.defs#profileAssociatedActivitySubscription"; 150 + allowSubscriptions: 151 + | "followers" 152 + | "mutuals" 153 + | "none" 154 + | (string & globalThis.Record<PropertyKey, never>); 155 + } 156 + 157 + const hashProfileAssociatedActivitySubscription = 158 + "profileAssociatedActivitySubscription"; 159 + 160 + export function isProfileAssociatedActivitySubscription<V>(v: V) { 161 + return is$typed(v, id, hashProfileAssociatedActivitySubscription); 162 + } 163 + 164 + export function validateProfileAssociatedActivitySubscription<V>(v: V) { 165 + return validate<ProfileAssociatedActivitySubscription & V>( 166 + v, 167 + id, 168 + hashProfileAssociatedActivitySubscription, 169 + ); 170 + } 171 + 130 172 /** Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests. */ 131 173 export interface ViewerState { 132 174 $type?: "app.bsky.actor.defs#viewerState"; ··· 138 180 following?: string; 139 181 followedBy?: string; 140 182 knownFollowers?: KnownFollowers; 183 + activitySubscription?: AppBskyNotificationDefs.ActivitySubscription; 141 184 } 142 185 143 186 const hashViewerState = "viewerState"; ··· 167 210 return validate<KnownFollowers & V>(v, id, hashKnownFollowers); 168 211 } 169 212 213 + /** Represents the verification information about the user this object is attached to. */ 214 + export interface VerificationState { 215 + $type?: "app.bsky.actor.defs#verificationState"; 216 + /** All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included. */ 217 + verifications: (VerificationView)[]; 218 + /** The user's status as a verified account. */ 219 + verifiedStatus: 220 + | "valid" 221 + | "invalid" 222 + | "none" 223 + | (string & globalThis.Record<PropertyKey, never>); 224 + /** The user's status as a trusted verifier. */ 225 + trustedVerifierStatus: 226 + | "valid" 227 + | "invalid" 228 + | "none" 229 + | (string & globalThis.Record<PropertyKey, never>); 230 + } 231 + 232 + const hashVerificationState = "verificationState"; 233 + 234 + export function isVerificationState<V>(v: V) { 235 + return is$typed(v, id, hashVerificationState); 236 + } 237 + 238 + export function validateVerificationState<V>(v: V) { 239 + return validate<VerificationState & V>(v, id, hashVerificationState); 240 + } 241 + 242 + /** An individual verification for an associated subject. */ 243 + export interface VerificationView { 244 + $type?: "app.bsky.actor.defs#verificationView"; 245 + /** The user who issued this verification. */ 246 + issuer: string; 247 + /** The AT-URI of the verification record. */ 248 + uri: string; 249 + /** True if the verification passes validation, otherwise false. */ 250 + isValid: boolean; 251 + /** Timestamp when the verification was created. */ 252 + createdAt: string; 253 + } 254 + 255 + const hashVerificationView = "verificationView"; 256 + 257 + export function isVerificationView<V>(v: V) { 258 + return is$typed(v, id, hashVerificationView); 259 + } 260 + 261 + export function validateVerificationView<V>(v: V) { 262 + return validate<VerificationView & V>(v, id, hashVerificationView); 263 + } 264 + 170 265 export type Preferences = ( 171 266 | $Typed<AdultContentPref> 172 267 | $Typed<ContentLabelPref> ··· 181 276 | $Typed<BskyAppStatePref> 182 277 | $Typed<LabelersPref> 183 278 | $Typed<PostInteractionSettingsPref> 279 + | $Typed<VerificationPrefs> 184 280 | { $type: string } 185 281 )[]; 186 282 ··· 328 424 | "random" 329 425 | "hotness" 330 426 | (string & globalThis.Record<PropertyKey, never>); 331 - /** Show followed users at the top of all replies. */ 332 - prioritizeFollowedUsers?: boolean; 333 427 } 334 428 335 429 const hashThreadViewPref = "threadViewPref"; ··· 509 603 return validate<Nux & V>(v, id, hashNux); 510 604 } 511 605 606 + /** Preferences for how verified accounts appear in the app. */ 607 + export interface VerificationPrefs { 608 + $type?: "app.bsky.actor.defs#verificationPrefs"; 609 + /** Hide the blue check badges for verified accounts and trusted verifiers. */ 610 + hideBadges: boolean; 611 + } 612 + 613 + const hashVerificationPrefs = "verificationPrefs"; 614 + 615 + export function isVerificationPrefs<V>(v: V) { 616 + return is$typed(v, id, hashVerificationPrefs); 617 + } 618 + 619 + export function validateVerificationPrefs<V>(v: V) { 620 + return validate<VerificationPrefs & V>(v, id, hashVerificationPrefs); 621 + } 622 + 512 623 /** 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. */ 513 624 export interface PostInteractionSettingsPref { 514 625 $type?: "app.bsky.actor.defs#postInteractionSettingsPref"; ··· 538 649 hashPostInteractionSettingsPref, 539 650 ); 540 651 } 652 + 653 + export interface StatusView { 654 + $type?: "app.bsky.actor.defs#statusView"; 655 + /** The status for the account. */ 656 + status: 657 + | "app.bsky.actor.status#live" 658 + | (string & globalThis.Record<PropertyKey, never>); 659 + record: { [_ in string]: unknown }; 660 + embed?: $Typed<AppBskyEmbedExternal.View> | { $type: string }; 661 + /** The date when this status will expire. The application might choose to no longer return the status after expiration. */ 662 + expiresAt?: string; 663 + /** True if the status is not expired, false if it is expired. Only present if expiration was set. */ 664 + isActive?: boolean; 665 + } 666 + 667 + const hashStatusView = "statusView"; 668 + 669 + export function isStatusView<V>(v: V) { 670 + return is$typed(v, id, hashStatusView); 671 + } 672 + 673 + export function validateStatusView<V>(v: V) { 674 + return validate<StatusView & V>(v, id, hashStatusView); 675 + }
+7 -3
lex/types/app/bsky/actor/profile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 - import { is$typed as _is$typed } from "../../../../util.ts"; 7 - import { type $Typed } from "../../../../util.ts"; 6 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 8 7 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 9 8 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 10 9 ··· 16 15 displayName?: string; 17 16 /** Free-form profile description text. */ 18 17 description?: string; 18 + /** Free-form pronouns text. */ 19 + pronouns?: string; 20 + website?: string; 19 21 /** Small image to be displayed next to posts from account. AKA, 'profile picture' */ 20 22 avatar?: BlobRef; 21 23 /** Larger horizontal image to display behind profile view. */ ··· 36 38 export function validateRecord<V>(v: V) { 37 39 return validate<Record & V>(v, id, hashRecord, true); 38 40 } 41 + 42 + export type Main = Record;
+37
lex/types/app/bsky/actor/status.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as AppBskyEmbedExternal from "../embed/external.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "app.bsky.actor.status"; 10 + 11 + export interface Record { 12 + $type: "app.bsky.actor.status"; 13 + /** The status for the account. */ 14 + status: 15 + | "app.bsky.actor.status#live" 16 + | (string & globalThis.Record<PropertyKey, never>); 17 + embed?: $Typed<AppBskyEmbedExternal.Main> | { $type: string }; 18 + /** The duration of the status in minutes. Applications can choose to impose minimum and maximum limits. */ 19 + durationMinutes?: number; 20 + createdAt: string; 21 + [k: string]: unknown; 22 + } 23 + 24 + const hashRecord = "main"; 25 + 26 + export function isRecord<V>(v: V) { 27 + return is$typed(v, id, hashRecord); 28 + } 29 + 30 + export function validateRecord<V>(v: V) { 31 + return validate<Record & V>(v, id, hashRecord, true); 32 + } 33 + 34 + export type Main = Record; 35 + 36 + /** Advertises an account as currently offering live content. */ 37 + export const LIVE = `${id}#live`;
+42
lex/types/app/bsky/ageassurance/begin.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyAgeassuranceDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** The user's email address to receive Age Assurance instructions. */ 10 + email: string; 11 + /** The user's preferred language for communication during the Age Assurance process. */ 12 + language: string; 13 + /** An ISO 3166-1 alpha-2 code of the user's location. */ 14 + countryCode: string; 15 + /** An optional ISO 3166-2 code of the user's region or state within the country. */ 16 + regionCode?: string; 17 + } 18 + 19 + export type OutputSchema = AppBskyAgeassuranceDefs.State; 20 + 21 + export interface HandlerInput { 22 + encoding: "application/json"; 23 + body: InputSchema; 24 + } 25 + 26 + export interface HandlerSuccess { 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 + } 31 + 32 + export interface HandlerError { 33 + status: number; 34 + message?: string; 35 + error?: 36 + | "InvalidEmail" 37 + | "DidTooLong" 38 + | "InvalidInitiation" 39 + | "RegionNotSupported"; 40 + } 41 + 42 + export type HandlerOutput = HandlerError | HandlerSuccess;
+309
lex/types/app/bsky/ageassurance/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "app.bsky.ageassurance.defs"; 9 + 10 + /** The access level granted based on Age Assurance data we've processed. */ 11 + export type Access = 12 + | "unknown" 13 + | "none" 14 + | "safe" 15 + | "full" 16 + | (string & globalThis.Record<PropertyKey, never>); 17 + /** The status of the Age Assurance process. */ 18 + export type Status = 19 + | "unknown" 20 + | "pending" 21 + | "assured" 22 + | "blocked" 23 + | (string & globalThis.Record<PropertyKey, never>); 24 + 25 + /** The user's computed Age Assurance state. */ 26 + export interface State { 27 + $type?: "app.bsky.ageassurance.defs#state"; 28 + /** The timestamp when this state was last updated. */ 29 + lastInitiatedAt?: string; 30 + status: Status; 31 + access: Access; 32 + } 33 + 34 + const hashState = "state"; 35 + 36 + export function isState<V>(v: V) { 37 + return is$typed(v, id, hashState); 38 + } 39 + 40 + export function validateState<V>(v: V) { 41 + return validate<State & V>(v, id, hashState); 42 + } 43 + 44 + /** Additional metadata needed to compute Age Assurance state client-side. */ 45 + export interface StateMetadata { 46 + $type?: "app.bsky.ageassurance.defs#stateMetadata"; 47 + /** The account creation timestamp. */ 48 + accountCreatedAt?: string; 49 + } 50 + 51 + const hashStateMetadata = "stateMetadata"; 52 + 53 + export function isStateMetadata<V>(v: V) { 54 + return is$typed(v, id, hashStateMetadata); 55 + } 56 + 57 + export function validateStateMetadata<V>(v: V) { 58 + return validate<StateMetadata & V>(v, id, hashStateMetadata); 59 + } 60 + 61 + export interface Config { 62 + $type?: "app.bsky.ageassurance.defs#config"; 63 + /** The per-region Age Assurance configuration. */ 64 + regions: (ConfigRegion)[]; 65 + } 66 + 67 + const hashConfig = "config"; 68 + 69 + export function isConfig<V>(v: V) { 70 + return is$typed(v, id, hashConfig); 71 + } 72 + 73 + export function validateConfig<V>(v: V) { 74 + return validate<Config & V>(v, id, hashConfig); 75 + } 76 + 77 + /** The Age Assurance configuration for a specific region. */ 78 + export interface ConfigRegion { 79 + $type?: "app.bsky.ageassurance.defs#configRegion"; 80 + /** The ISO 3166-1 alpha-2 country code this configuration applies to. */ 81 + countryCode: string; 82 + /** The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country. */ 83 + regionCode?: string; 84 + /** The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item. */ 85 + rules: ( 86 + | $Typed<ConfigRegionRuleDefault> 87 + | $Typed<ConfigRegionRuleIfDeclaredOverAge> 88 + | $Typed<ConfigRegionRuleIfDeclaredUnderAge> 89 + | $Typed<ConfigRegionRuleIfAssuredOverAge> 90 + | $Typed<ConfigRegionRuleIfAssuredUnderAge> 91 + | $Typed<ConfigRegionRuleIfAccountNewerThan> 92 + | $Typed<ConfigRegionRuleIfAccountOlderThan> 93 + | { $type: string } 94 + )[]; 95 + } 96 + 97 + const hashConfigRegion = "configRegion"; 98 + 99 + export function isConfigRegion<V>(v: V) { 100 + return is$typed(v, id, hashConfigRegion); 101 + } 102 + 103 + export function validateConfigRegion<V>(v: V) { 104 + return validate<ConfigRegion & V>(v, id, hashConfigRegion); 105 + } 106 + 107 + /** Age Assurance rule that applies by default. */ 108 + export interface ConfigRegionRuleDefault { 109 + $type?: "app.bsky.ageassurance.defs#configRegionRuleDefault"; 110 + access: Access; 111 + } 112 + 113 + const hashConfigRegionRuleDefault = "configRegionRuleDefault"; 114 + 115 + export function isConfigRegionRuleDefault<V>(v: V) { 116 + return is$typed(v, id, hashConfigRegionRuleDefault); 117 + } 118 + 119 + export function validateConfigRegionRuleDefault<V>(v: V) { 120 + return validate<ConfigRegionRuleDefault & V>( 121 + v, 122 + id, 123 + hashConfigRegionRuleDefault, 124 + ); 125 + } 126 + 127 + /** Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age. */ 128 + export interface ConfigRegionRuleIfDeclaredOverAge { 129 + $type?: "app.bsky.ageassurance.defs#configRegionRuleIfDeclaredOverAge"; 130 + /** The age threshold as a whole integer. */ 131 + age: number; 132 + access: Access; 133 + } 134 + 135 + const hashConfigRegionRuleIfDeclaredOverAge = 136 + "configRegionRuleIfDeclaredOverAge"; 137 + 138 + export function isConfigRegionRuleIfDeclaredOverAge<V>(v: V) { 139 + return is$typed(v, id, hashConfigRegionRuleIfDeclaredOverAge); 140 + } 141 + 142 + export function validateConfigRegionRuleIfDeclaredOverAge<V>(v: V) { 143 + return validate<ConfigRegionRuleIfDeclaredOverAge & V>( 144 + v, 145 + id, 146 + hashConfigRegionRuleIfDeclaredOverAge, 147 + ); 148 + } 149 + 150 + /** Age Assurance rule that applies if the user has declared themselves under a certain age. */ 151 + export interface ConfigRegionRuleIfDeclaredUnderAge { 152 + $type?: "app.bsky.ageassurance.defs#configRegionRuleIfDeclaredUnderAge"; 153 + /** The age threshold as a whole integer. */ 154 + age: number; 155 + access: Access; 156 + } 157 + 158 + const hashConfigRegionRuleIfDeclaredUnderAge = 159 + "configRegionRuleIfDeclaredUnderAge"; 160 + 161 + export function isConfigRegionRuleIfDeclaredUnderAge<V>(v: V) { 162 + return is$typed(v, id, hashConfigRegionRuleIfDeclaredUnderAge); 163 + } 164 + 165 + export function validateConfigRegionRuleIfDeclaredUnderAge<V>(v: V) { 166 + return validate<ConfigRegionRuleIfDeclaredUnderAge & V>( 167 + v, 168 + id, 169 + hashConfigRegionRuleIfDeclaredUnderAge, 170 + ); 171 + } 172 + 173 + /** Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age. */ 174 + export interface ConfigRegionRuleIfAssuredOverAge { 175 + $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAssuredOverAge"; 176 + /** The age threshold as a whole integer. */ 177 + age: number; 178 + access: Access; 179 + } 180 + 181 + const hashConfigRegionRuleIfAssuredOverAge = "configRegionRuleIfAssuredOverAge"; 182 + 183 + export function isConfigRegionRuleIfAssuredOverAge<V>(v: V) { 184 + return is$typed(v, id, hashConfigRegionRuleIfAssuredOverAge); 185 + } 186 + 187 + export function validateConfigRegionRuleIfAssuredOverAge<V>(v: V) { 188 + return validate<ConfigRegionRuleIfAssuredOverAge & V>( 189 + v, 190 + id, 191 + hashConfigRegionRuleIfAssuredOverAge, 192 + ); 193 + } 194 + 195 + /** Age Assurance rule that applies if the user has been assured to be under a certain age. */ 196 + export interface ConfigRegionRuleIfAssuredUnderAge { 197 + $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAssuredUnderAge"; 198 + /** The age threshold as a whole integer. */ 199 + age: number; 200 + access: Access; 201 + } 202 + 203 + const hashConfigRegionRuleIfAssuredUnderAge = 204 + "configRegionRuleIfAssuredUnderAge"; 205 + 206 + export function isConfigRegionRuleIfAssuredUnderAge<V>(v: V) { 207 + return is$typed(v, id, hashConfigRegionRuleIfAssuredUnderAge); 208 + } 209 + 210 + export function validateConfigRegionRuleIfAssuredUnderAge<V>(v: V) { 211 + return validate<ConfigRegionRuleIfAssuredUnderAge & V>( 212 + v, 213 + id, 214 + hashConfigRegionRuleIfAssuredUnderAge, 215 + ); 216 + } 217 + 218 + /** Age Assurance rule that applies if the account is equal-to or newer than a certain date. */ 219 + export interface ConfigRegionRuleIfAccountNewerThan { 220 + $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAccountNewerThan"; 221 + /** The date threshold as a datetime string. */ 222 + date: string; 223 + access: Access; 224 + } 225 + 226 + const hashConfigRegionRuleIfAccountNewerThan = 227 + "configRegionRuleIfAccountNewerThan"; 228 + 229 + export function isConfigRegionRuleIfAccountNewerThan<V>(v: V) { 230 + return is$typed(v, id, hashConfigRegionRuleIfAccountNewerThan); 231 + } 232 + 233 + export function validateConfigRegionRuleIfAccountNewerThan<V>(v: V) { 234 + return validate<ConfigRegionRuleIfAccountNewerThan & V>( 235 + v, 236 + id, 237 + hashConfigRegionRuleIfAccountNewerThan, 238 + ); 239 + } 240 + 241 + /** Age Assurance rule that applies if the account is older than a certain date. */ 242 + export interface ConfigRegionRuleIfAccountOlderThan { 243 + $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAccountOlderThan"; 244 + /** The date threshold as a datetime string. */ 245 + date: string; 246 + access: Access; 247 + } 248 + 249 + const hashConfigRegionRuleIfAccountOlderThan = 250 + "configRegionRuleIfAccountOlderThan"; 251 + 252 + export function isConfigRegionRuleIfAccountOlderThan<V>(v: V) { 253 + return is$typed(v, id, hashConfigRegionRuleIfAccountOlderThan); 254 + } 255 + 256 + export function validateConfigRegionRuleIfAccountOlderThan<V>(v: V) { 257 + return validate<ConfigRegionRuleIfAccountOlderThan & V>( 258 + v, 259 + id, 260 + hashConfigRegionRuleIfAccountOlderThan, 261 + ); 262 + } 263 + 264 + /** Object used to store Age Assurance data in stash. */ 265 + export interface Event { 266 + $type?: "app.bsky.ageassurance.defs#event"; 267 + /** The date and time of this write operation. */ 268 + createdAt: string; 269 + /** The unique identifier for this instance of the Age Assurance flow, in UUID format. */ 270 + attemptId: string; 271 + /** The status of the Age Assurance process. */ 272 + status: 273 + | "unknown" 274 + | "pending" 275 + | "assured" 276 + | "blocked" 277 + | (string & globalThis.Record<PropertyKey, never>); 278 + /** The access level granted based on Age Assurance data we've processed. */ 279 + access: 280 + | "unknown" 281 + | "none" 282 + | "safe" 283 + | "full" 284 + | (string & globalThis.Record<PropertyKey, never>); 285 + /** The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow. */ 286 + countryCode: string; 287 + /** The ISO 3166-2 region code provided when beginning the Age Assurance flow. */ 288 + regionCode?: string; 289 + /** The email used for Age Assurance. */ 290 + email?: string; 291 + /** The IP address used when initiating the Age Assurance flow. */ 292 + initIp?: string; 293 + /** The user agent used when initiating the Age Assurance flow. */ 294 + initUa?: string; 295 + /** The IP address used when completing the Age Assurance flow. */ 296 + completeIp?: string; 297 + /** The user agent used when completing the Age Assurance flow. */ 298 + completeUa?: string; 299 + } 300 + 301 + const hashEvent = "event"; 302 + 303 + export function isEvent<V>(v: V) { 304 + return is$typed(v, id, hashEvent); 305 + } 306 + 307 + export function validateEvent<V>(v: V) { 308 + return validate<Event & V>(v, id, hashEvent); 309 + }
+22
lex/types/app/bsky/ageassurance/getConfig.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyAgeassuranceDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + export type InputSchema = undefined; 8 + export type OutputSchema = AppBskyAgeassuranceDefs.Config; 9 + export type HandlerInput = void; 10 + 11 + export interface HandlerSuccess { 12 + encoding: "application/json"; 13 + body: OutputSchema; 14 + headers?: { [key: string]: string }; 15 + } 16 + 17 + export interface HandlerError { 18 + status: number; 19 + message?: string; 20 + } 21 + 22 + export type HandlerOutput = HandlerError | HandlerSuccess;
+30
lex/types/app/bsky/ageassurance/getState.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyAgeassuranceDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + countryCode: string; 8 + regionCode?: string; 9 + }; 10 + export type InputSchema = undefined; 11 + 12 + export interface OutputSchema { 13 + state: AppBskyAgeassuranceDefs.State; 14 + metadata: AppBskyAgeassuranceDefs.StateMetadata; 15 + } 16 + 17 + export type HandlerInput = void; 18 + 19 + export interface HandlerSuccess { 20 + encoding: "application/json"; 21 + body: OutputSchema; 22 + headers?: { [key: string]: string }; 23 + } 24 + 25 + export interface HandlerError { 26 + status: number; 27 + message?: string; 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess;
+22
lex/types/app/bsky/bookmark/createBookmark.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = globalThis.Record<PropertyKey, never>; 5 + 6 + export interface InputSchema { 7 + uri: string; 8 + cid: string; 9 + } 10 + 11 + export interface HandlerInput { 12 + encoding: "application/json"; 13 + body: InputSchema; 14 + } 15 + 16 + export interface HandlerError { 17 + status: number; 18 + message?: string; 19 + error?: "UnsupportedCollection"; 20 + } 21 + 22 + export type HandlerOutput = HandlerError | void;
+47
lex/types/app/bsky/bookmark/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 7 + import type * as AppBskyFeedDefs from "../feed/defs.ts"; 8 + 9 + const is$typed = _is$typed, validate = _validate; 10 + const id = "app.bsky.bookmark.defs"; 11 + 12 + /** Object used to store bookmark data in stash. */ 13 + export interface Bookmark { 14 + $type?: "app.bsky.bookmark.defs#bookmark"; 15 + subject: ComAtprotoRepoStrongRef.Main; 16 + } 17 + 18 + const hashBookmark = "bookmark"; 19 + 20 + export function isBookmark<V>(v: V) { 21 + return is$typed(v, id, hashBookmark); 22 + } 23 + 24 + export function validateBookmark<V>(v: V) { 25 + return validate<Bookmark & V>(v, id, hashBookmark); 26 + } 27 + 28 + export interface BookmarkView { 29 + $type?: "app.bsky.bookmark.defs#bookmarkView"; 30 + subject: ComAtprotoRepoStrongRef.Main; 31 + createdAt?: string; 32 + item: 33 + | $Typed<AppBskyFeedDefs.BlockedPost> 34 + | $Typed<AppBskyFeedDefs.NotFoundPost> 35 + | $Typed<AppBskyFeedDefs.PostView> 36 + | { $type: string }; 37 + } 38 + 39 + const hashBookmarkView = "bookmarkView"; 40 + 41 + export function isBookmarkView<V>(v: V) { 42 + return is$typed(v, id, hashBookmarkView); 43 + } 44 + 45 + export function validateBookmarkView<V>(v: V) { 46 + return validate<BookmarkView & V>(v, id, hashBookmarkView); 47 + }
+21
lex/types/app/bsky/bookmark/deleteBookmark.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = globalThis.Record<PropertyKey, never>; 5 + 6 + export interface InputSchema { 7 + uri: string; 8 + } 9 + 10 + export interface HandlerInput { 11 + encoding: "application/json"; 12 + body: InputSchema; 13 + } 14 + 15 + export interface HandlerError { 16 + status: number; 17 + message?: string; 18 + error?: "UnsupportedCollection"; 19 + } 20 + 21 + export type HandlerOutput = HandlerError | void;
+30
lex/types/app/bsky/bookmark/getBookmarks.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyBookmarkDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + limit: number; 8 + cursor?: string; 9 + }; 10 + export type InputSchema = undefined; 11 + 12 + export interface OutputSchema { 13 + cursor?: string; 14 + bookmarks: (AppBskyBookmarkDefs.BookmarkView)[]; 15 + } 16 + 17 + export type HandlerInput = void; 18 + 19 + export interface HandlerSuccess { 20 + encoding: "application/json"; 21 + body: OutputSchema; 22 + headers?: { [key: string]: string }; 23 + } 24 + 25 + export interface HandlerError { 26 + status: number; 27 + message?: string; 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess;
+1 -1
lex/types/app/bsky/embed/external.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 6 import { is$typed as _is$typed } from "../../../../util.ts"; 7 7
+1 -1
lex/types/app/bsky/embed/images.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 6 import { is$typed as _is$typed } from "../../../../util.ts"; 7 7 import type * as AppBskyEmbedDefs from "./defs.ts";
+1 -2
lex/types/app/bsky/embed/record.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 8 7 import type * as AppBskyFeedDefs from "../feed/defs.ts"; 9 8 import type * as AppBskyGraphDefs from "../graph/defs.ts";
+1 -2
lex/types/app/bsky/embed/recordWithMedia.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as AppBskyEmbedRecord from "./record.ts"; 8 7 import type * as AppBskyEmbedImages from "./images.ts"; 9 8 import type * as AppBskyEmbedVideo from "./video.ts";
+2 -1
lex/types/app/bsky/embed/video.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 6 import { is$typed as _is$typed } from "../../../../util.ts"; 7 7 import type * as AppBskyEmbedDefs from "./defs.ts"; ··· 11 11 12 12 export interface Main { 13 13 $type?: "app.bsky.embed.video"; 14 + /** The mp4 video file. May be up to 100mb, formerly limited to 50mb. */ 14 15 video: BlobRef; 15 16 captions?: (Caption)[]; 16 17 /** Alt text description of the video, for accessibility. */
+11 -2
lex/types/app/bsky/feed/defs.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as AppBskyActorDefs from "../actor/defs.ts"; 8 7 import type * as AppBskyEmbedImages from "../embed/images.ts"; 9 8 import type * as AppBskyEmbedVideo from "../embed/video.ts"; ··· 30 29 | $Typed<AppBskyEmbedRecord.View> 31 30 | $Typed<AppBskyEmbedRecordWithMedia.View> 32 31 | { $type: string }; 32 + bookmarkCount?: number; 33 33 replyCount?: number; 34 34 repostCount?: number; 35 35 likeCount?: number; ··· 38 38 viewer?: ViewerState; 39 39 labels?: (ComAtprotoLabelDefs.Label)[]; 40 40 threadgate?: ThreadgateView; 41 + /** Debug information for internal development */ 42 + debug?: { [_ in string]: unknown }; 41 43 } 42 44 43 45 const hashPostView = "postView"; ··· 55 57 $type?: "app.bsky.feed.defs#viewerState"; 56 58 repost?: string; 57 59 like?: string; 60 + bookmarked?: boolean; 58 61 threadMuted?: boolean; 59 62 replyDisabled?: boolean; 60 63 embeddingDisabled?: boolean; ··· 94 97 reason?: $Typed<ReasonRepost> | $Typed<ReasonPin> | { $type: string }; 95 98 /** Context provided by feed generator that may be passed back alongside interactions. */ 96 99 feedContext?: string; 100 + /** Unique identifier per request that may be passed back alongside interactions. */ 101 + reqId?: string; 97 102 } 98 103 99 104 const hashFeedViewPost = "feedViewPost"; ··· 130 135 export interface ReasonRepost { 131 136 $type?: "app.bsky.feed.defs#reasonRepost"; 132 137 by: AppBskyActorDefs.ProfileViewBasic; 138 + uri?: string; 139 + cid?: string; 133 140 indexedAt: string; 134 141 } 135 142 ··· 363 370 | (string & globalThis.Record<PropertyKey, never>); 364 371 /** Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton. */ 365 372 feedContext?: string; 373 + /** Unique identifier per request that may be passed back alongside interactions. */ 374 + reqId?: string; 366 375 } 367 376 368 377 const hashInteraction = "interaction";
+4 -3
lex/types/app/bsky/feed/generator.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 - import { is$typed as _is$typed } from "../../../../util.ts"; 7 - import { type $Typed } from "../../../../util.ts"; 6 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 8 7 import type * as AppBskyRichtextFacet from "../richtext/facet.ts"; 9 8 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 10 9 ··· 38 37 export function validateRecord<V>(v: V) { 39 38 return validate<Record & V>(v, id, hashRecord, true); 40 39 } 40 + 41 + export type Main = Record;
+2
lex/types/app/bsky/feed/getFeedSkeleton.ts
··· 14 14 export interface OutputSchema { 15 15 cursor?: string; 16 16 feed: (AppBskyFeedDefs.SkeletonFeedPost)[]; 17 + /** Unique identifier per request that may be passed back alongside interactions. */ 18 + reqId?: string; 17 19 } 18 20 19 21 export type HandlerInput = void;
+1 -1
lex/types/app/bsky/feed/getPostThread.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as AppBskyFeedDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+2
lex/types/app/bsky/feed/like.ts
··· 25 25 export function validateRecord<V>(v: V) { 26 26 return validate<Record & V>(v, id, hashRecord, true); 27 27 } 28 + 29 + export type Main = Record;
+3 -2
lex/types/app/bsky/feed/post.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as AppBskyRichtextFacet from "../richtext/facet.ts"; 8 7 import type * as AppBskyEmbedImages from "../embed/images.ts"; 9 8 import type * as AppBskyEmbedVideo from "../embed/video.ts"; ··· 51 50 export function validateRecord<V>(v: V) { 52 51 return validate<Record & V>(v, id, hashRecord, true); 53 52 } 53 + 54 + export type Main = Record; 54 55 55 56 export interface ReplyRef { 56 57 $type?: "app.bsky.feed.post#replyRef";
+3 -2
lex/types/app/bsky/feed/postgate.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 8 7 const is$typed = _is$typed, validate = _validate; 9 8 const id = "app.bsky.feed.postgate"; ··· 29 28 export function validateRecord<V>(v: V) { 30 29 return validate<Record & V>(v, id, hashRecord, true); 31 30 } 31 + 32 + export type Main = Record; 32 33 33 34 /** Disables embedding of this post. */ 34 35 export interface DisableRule {
+2
lex/types/app/bsky/feed/repost.ts
··· 25 25 export function validateRecord<V>(v: V) { 26 26 return validate<Record & V>(v, id, hashRecord, true); 27 27 } 28 + 29 + export type Main = Record;
+3 -2
lex/types/app/bsky/feed/threadgate.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 8 7 const is$typed = _is$typed, validate = _validate; 9 8 const id = "app.bsky.feed.threadgate"; ··· 35 34 export function validateRecord<V>(v: V) { 36 35 return validate<Record & V>(v, id, hashRecord, true); 37 36 } 37 + 38 + export type Main = Record; 38 39 39 40 /** Allow replies from actors mentioned in your post. */ 40 41 export interface MentionRule {
+2
lex/types/app/bsky/graph/block.ts
··· 24 24 export function validateRecord<V>(v: V) { 25 25 return validate<Record & V>(v, id, hashRecord, true); 26 26 } 27 + 28 + export type Main = Record;
+4
lex/types/app/bsky/graph/follow.ts
··· 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 5 import { is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 6 7 7 8 const is$typed = _is$typed, validate = _validate; 8 9 const id = "app.bsky.graph.follow"; ··· 11 12 $type: "app.bsky.graph.follow"; 12 13 subject: string; 13 14 createdAt: string; 15 + via?: ComAtprotoRepoStrongRef.Main; 14 16 [k: string]: unknown; 15 17 } 16 18 ··· 23 25 export function validateRecord<V>(v: V) { 24 26 return validate<Record & V>(v, id, hashRecord, true); 25 27 } 28 + 29 + export type Main = Record;
+5
lex/types/app/bsky/graph/getLists.ts
··· 8 8 actor: string; 9 9 limit: number; 10 10 cursor?: string; 11 + /** Optional filter by list purpose. If not specified, all supported types are returned. */ 12 + purposes?: 13 + | "modlist" 14 + | "curatelist" 15 + | (string & globalThis.Record<PropertyKey, never>)[]; 11 16 }; 12 17 export type InputSchema = undefined; 13 18
+59
lex/types/app/bsky/graph/getListsWithMembership.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as AppBskyGraphDefs from "./defs.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "app.bsky.graph.getListsWithMembership"; 10 + 11 + export type QueryParams = { 12 + /** The account (actor) to check for membership. */ 13 + actor: string; 14 + limit: number; 15 + cursor?: string; 16 + /** Optional filter by list purpose. If not specified, all supported types are returned. */ 17 + purposes?: 18 + | "modlist" 19 + | "curatelist" 20 + | (string & globalThis.Record<PropertyKey, never>)[]; 21 + }; 22 + export type InputSchema = undefined; 23 + 24 + export interface OutputSchema { 25 + cursor?: string; 26 + listsWithMembership: (ListWithMembership)[]; 27 + } 28 + 29 + export type HandlerInput = void; 30 + 31 + export interface HandlerSuccess { 32 + encoding: "application/json"; 33 + body: OutputSchema; 34 + headers?: { [key: string]: string }; 35 + } 36 + 37 + export interface HandlerError { 38 + status: number; 39 + message?: string; 40 + } 41 + 42 + export type HandlerOutput = HandlerError | HandlerSuccess; 43 + 44 + /** A list and an optional list item indicating membership of a target user to that list. */ 45 + export interface ListWithMembership { 46 + $type?: "app.bsky.graph.getListsWithMembership#listWithMembership"; 47 + list: AppBskyGraphDefs.ListView; 48 + listItem?: AppBskyGraphDefs.ListItemView; 49 + } 50 + 51 + const hashListWithMembership = "listWithMembership"; 52 + 53 + export function isListWithMembership<V>(v: V) { 54 + return is$typed(v, id, hashListWithMembership); 55 + } 56 + 57 + export function validateListWithMembership<V>(v: V) { 58 + return validate<ListWithMembership & V>(v, id, hashListWithMembership); 59 + }
+1 -1
lex/types/app/bsky/graph/getRelationships.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as AppBskyGraphDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+59
lex/types/app/bsky/graph/getStarterPacksWithMembership.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as AppBskyGraphDefs from "./defs.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "app.bsky.graph.getStarterPacksWithMembership"; 10 + 11 + export type QueryParams = { 12 + /** The account (actor) to check for membership. */ 13 + actor: string; 14 + limit: number; 15 + cursor?: string; 16 + }; 17 + export type InputSchema = undefined; 18 + 19 + export interface OutputSchema { 20 + cursor?: string; 21 + starterPacksWithMembership: (StarterPackWithMembership)[]; 22 + } 23 + 24 + export type HandlerInput = void; 25 + 26 + export interface HandlerSuccess { 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 + } 31 + 32 + export interface HandlerError { 33 + status: number; 34 + message?: string; 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess; 38 + 39 + /** A starter pack and an optional list item indicating membership of a target user to that starter pack. */ 40 + export interface StarterPackWithMembership { 41 + $type?: 42 + "app.bsky.graph.getStarterPacksWithMembership#starterPackWithMembership"; 43 + starterPack: AppBskyGraphDefs.StarterPackView; 44 + listItem?: AppBskyGraphDefs.ListItemView; 45 + } 46 + 47 + const hashStarterPackWithMembership = "starterPackWithMembership"; 48 + 49 + export function isStarterPackWithMembership<V>(v: V) { 50 + return is$typed(v, id, hashStarterPackWithMembership); 51 + } 52 + 53 + export function validateStarterPackWithMembership<V>(v: V) { 54 + return validate<StarterPackWithMembership & V>( 55 + v, 56 + id, 57 + hashStarterPackWithMembership, 58 + ); 59 + }
+4 -3
lex/types/app/bsky/graph/list.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 - import { is$typed as _is$typed } from "../../../../util.ts"; 7 - import { type $Typed } from "../../../../util.ts"; 6 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 8 7 import type * as AppBskyGraphDefs from "./defs.ts"; 9 8 import type * as AppBskyRichtextFacet from "../richtext/facet.ts"; 10 9 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; ··· 34 33 export function validateRecord<V>(v: V) { 35 34 return validate<Record & V>(v, id, hashRecord, true); 36 35 } 36 + 37 + export type Main = Record;
+2
lex/types/app/bsky/graph/listblock.ts
··· 24 24 export function validateRecord<V>(v: V) { 25 25 return validate<Record & V>(v, id, hashRecord, true); 26 26 } 27 + 28 + export type Main = Record;
+2
lex/types/app/bsky/graph/listitem.ts
··· 26 26 export function validateRecord<V>(v: V) { 27 27 return validate<Record & V>(v, id, hashRecord, true); 28 28 } 29 + 30 + export type Main = Record;
+2
lex/types/app/bsky/graph/starterpack.ts
··· 31 31 return validate<Record & V>(v, id, hashRecord, true); 32 32 } 33 33 34 + export type Main = Record; 35 + 34 36 export interface FeedItem { 35 37 $type?: "app.bsky.graph.starterpack#feedItem"; 36 38 uri: string;
+33
lex/types/app/bsky/graph/verification.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "app.bsky.graph.verification"; 9 + 10 + export interface Record { 11 + $type: "app.bsky.graph.verification"; 12 + /** DID of the subject the verification applies to. */ 13 + subject: string; 14 + /** 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. */ 15 + handle: string; 16 + /** 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. */ 17 + displayName: string; 18 + /** Date of when the verification was created. */ 19 + createdAt: string; 20 + [k: string]: unknown; 21 + } 22 + 23 + const hashRecord = "main"; 24 + 25 + export function isRecord<V>(v: V) { 26 + return is$typed(v, id, hashRecord); 27 + } 28 + 29 + export function validateRecord<V>(v: V) { 30 + return validate<Record & V>(v, id, hashRecord, true); 31 + } 32 + 33 + export type Main = Record;
+1 -1
lex/types/app/bsky/labeler/getServices.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as AppBskyLabelerDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+3 -2
lex/types/app/bsky/labeler/service.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as AppBskyLabelerDefs from "./defs.ts"; 8 7 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 9 8 import type * as ComAtprotoModerationDefs from "../../../com/atproto/moderation/defs.ts"; ··· 34 33 export function validateRecord<V>(v: V) { 35 34 return validate<Record & V>(v, id, hashRecord, true); 36 35 } 36 + 37 + export type Main = Record;
+31
lex/types/app/bsky/notification/declaration.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "app.bsky.notification.declaration"; 9 + 10 + export interface Record { 11 + $type: "app.bsky.notification.declaration"; 12 + /** A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'. */ 13 + allowSubscriptions: 14 + | "followers" 15 + | "mutuals" 16 + | "none" 17 + | (string & globalThis.Record<PropertyKey, never>); 18 + [k: string]: unknown; 19 + } 20 + 21 + const hashRecord = "main"; 22 + 23 + export function isRecord<V>(v: V) { 24 + return is$typed(v, id, hashRecord); 25 + } 26 + 27 + export function validateRecord<V>(v: V) { 28 + return validate<Record & V>(v, id, hashRecord, true); 29 + } 30 + 31 + export type Main = Record;
+138
lex/types/app/bsky/notification/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "app.bsky.notification.defs"; 9 + 10 + export interface RecordDeleted { 11 + $type?: "app.bsky.notification.defs#recordDeleted"; 12 + } 13 + 14 + const hashRecordDeleted = "recordDeleted"; 15 + 16 + export function isRecordDeleted<V>(v: V) { 17 + return is$typed(v, id, hashRecordDeleted); 18 + } 19 + 20 + export function validateRecordDeleted<V>(v: V) { 21 + return validate<RecordDeleted & V>(v, id, hashRecordDeleted); 22 + } 23 + 24 + export interface ChatPreference { 25 + $type?: "app.bsky.notification.defs#chatPreference"; 26 + include: 27 + | "all" 28 + | "accepted" 29 + | (string & globalThis.Record<PropertyKey, never>); 30 + push: boolean; 31 + } 32 + 33 + const hashChatPreference = "chatPreference"; 34 + 35 + export function isChatPreference<V>(v: V) { 36 + return is$typed(v, id, hashChatPreference); 37 + } 38 + 39 + export function validateChatPreference<V>(v: V) { 40 + return validate<ChatPreference & V>(v, id, hashChatPreference); 41 + } 42 + 43 + export interface FilterablePreference { 44 + $type?: "app.bsky.notification.defs#filterablePreference"; 45 + include: "all" | "follows" | (string & globalThis.Record<PropertyKey, never>); 46 + list: boolean; 47 + push: boolean; 48 + } 49 + 50 + const hashFilterablePreference = "filterablePreference"; 51 + 52 + export function isFilterablePreference<V>(v: V) { 53 + return is$typed(v, id, hashFilterablePreference); 54 + } 55 + 56 + export function validateFilterablePreference<V>(v: V) { 57 + return validate<FilterablePreference & V>(v, id, hashFilterablePreference); 58 + } 59 + 60 + export interface Preference { 61 + $type?: "app.bsky.notification.defs#preference"; 62 + list: boolean; 63 + push: boolean; 64 + } 65 + 66 + const hashPreference = "preference"; 67 + 68 + export function isPreference<V>(v: V) { 69 + return is$typed(v, id, hashPreference); 70 + } 71 + 72 + export function validatePreference<V>(v: V) { 73 + return validate<Preference & V>(v, id, hashPreference); 74 + } 75 + 76 + export interface Preferences { 77 + $type?: "app.bsky.notification.defs#preferences"; 78 + chat: ChatPreference; 79 + follow: FilterablePreference; 80 + like: FilterablePreference; 81 + likeViaRepost: FilterablePreference; 82 + mention: FilterablePreference; 83 + quote: FilterablePreference; 84 + reply: FilterablePreference; 85 + repost: FilterablePreference; 86 + repostViaRepost: FilterablePreference; 87 + starterpackJoined: Preference; 88 + subscribedPost: Preference; 89 + unverified: Preference; 90 + verified: Preference; 91 + } 92 + 93 + const hashPreferences = "preferences"; 94 + 95 + export function isPreferences<V>(v: V) { 96 + return is$typed(v, id, hashPreferences); 97 + } 98 + 99 + export function validatePreferences<V>(v: V) { 100 + return validate<Preferences & V>(v, id, hashPreferences); 101 + } 102 + 103 + export interface ActivitySubscription { 104 + $type?: "app.bsky.notification.defs#activitySubscription"; 105 + post: boolean; 106 + reply: boolean; 107 + } 108 + 109 + const hashActivitySubscription = "activitySubscription"; 110 + 111 + export function isActivitySubscription<V>(v: V) { 112 + return is$typed(v, id, hashActivitySubscription); 113 + } 114 + 115 + export function validateActivitySubscription<V>(v: V) { 116 + return validate<ActivitySubscription & V>(v, id, hashActivitySubscription); 117 + } 118 + 119 + /** Object used to store activity subscription data in stash. */ 120 + export interface SubjectActivitySubscription { 121 + $type?: "app.bsky.notification.defs#subjectActivitySubscription"; 122 + subject: string; 123 + activitySubscription: ActivitySubscription; 124 + } 125 + 126 + const hashSubjectActivitySubscription = "subjectActivitySubscription"; 127 + 128 + export function isSubjectActivitySubscription<V>(v: V) { 129 + return is$typed(v, id, hashSubjectActivitySubscription); 130 + } 131 + 132 + export function validateSubjectActivitySubscription<V>(v: V) { 133 + return validate<SubjectActivitySubscription & V>( 134 + v, 135 + id, 136 + hashSubjectActivitySubscription, 137 + ); 138 + }
+26
lex/types/app/bsky/notification/getPreferences.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyNotificationDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + export type InputSchema = undefined; 8 + 9 + export interface OutputSchema { 10 + preferences: AppBskyNotificationDefs.Preferences; 11 + } 12 + 13 + export type HandlerInput = void; 14 + 15 + export interface HandlerSuccess { 16 + encoding: "application/json"; 17 + body: OutputSchema; 18 + headers?: { [key: string]: string }; 19 + } 20 + 21 + export interface HandlerError { 22 + status: number; 23 + message?: string; 24 + } 25 + 26 + export type HandlerOutput = HandlerError | HandlerSuccess;
+30
lex/types/app/bsky/notification/listActivitySubscriptions.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyActorDefs from "../actor/defs.ts"; 5 + 6 + export type QueryParams = { 7 + limit: number; 8 + cursor?: string; 9 + }; 10 + export type InputSchema = undefined; 11 + 12 + export interface OutputSchema { 13 + cursor?: string; 14 + subscriptions: (AppBskyActorDefs.ProfileView)[]; 15 + } 16 + 17 + export type HandlerInput = void; 18 + 19 + export interface HandlerSuccess { 20 + encoding: "application/json"; 21 + body: OutputSchema; 22 + headers?: { [key: string]: string }; 23 + } 24 + 25 + export interface HandlerError { 26 + status: number; 27 + message?: string; 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess;
+6 -1
lex/types/app/bsky/notification/listNotifications.ts
··· 46 46 uri: string; 47 47 cid: string; 48 48 author: AppBskyActorDefs.ProfileView; 49 - /** Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', and 'starterpack-joined'. */ 49 + /** The reason why this notification was delivered - e.g. your post was liked, or you received a new follower. */ 50 50 reason: 51 51 | "like" 52 52 | "repost" ··· 55 55 | "reply" 56 56 | "quote" 57 57 | "starterpack-joined" 58 + | "verified" 59 + | "unverified" 60 + | "like-via-repost" 61 + | "repost-via-repost" 62 + | "subscribed-post" 58 63 | (string & globalThis.Record<PropertyKey, never>); 59 64 reasonSubject?: string; 60 65 record: { [_ in string]: unknown };
+34
lex/types/app/bsky/notification/putActivitySubscription.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyNotificationDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + subject: string; 10 + activitySubscription: AppBskyNotificationDefs.ActivitySubscription; 11 + } 12 + 13 + export interface OutputSchema { 14 + subject: string; 15 + activitySubscription?: AppBskyNotificationDefs.ActivitySubscription; 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: "application/json"; 20 + body: InputSchema; 21 + } 22 + 23 + export interface HandlerSuccess { 24 + encoding: "application/json"; 25 + body: OutputSchema; 26 + headers?: { [key: string]: string }; 27 + } 28 + 29 + export interface HandlerError { 30 + status: number; 31 + message?: string; 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess;
+44
lex/types/app/bsky/notification/putPreferencesV2.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyNotificationDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + chat?: AppBskyNotificationDefs.ChatPreference; 10 + follow?: AppBskyNotificationDefs.FilterablePreference; 11 + like?: AppBskyNotificationDefs.FilterablePreference; 12 + likeViaRepost?: AppBskyNotificationDefs.FilterablePreference; 13 + mention?: AppBskyNotificationDefs.FilterablePreference; 14 + quote?: AppBskyNotificationDefs.FilterablePreference; 15 + reply?: AppBskyNotificationDefs.FilterablePreference; 16 + repost?: AppBskyNotificationDefs.FilterablePreference; 17 + repostViaRepost?: AppBskyNotificationDefs.FilterablePreference; 18 + starterpackJoined?: AppBskyNotificationDefs.Preference; 19 + subscribedPost?: AppBskyNotificationDefs.Preference; 20 + unverified?: AppBskyNotificationDefs.Preference; 21 + verified?: AppBskyNotificationDefs.Preference; 22 + } 23 + 24 + export interface OutputSchema { 25 + preferences: AppBskyNotificationDefs.Preferences; 26 + } 27 + 28 + export interface HandlerInput { 29 + encoding: "application/json"; 30 + body: InputSchema; 31 + } 32 + 33 + export interface HandlerSuccess { 34 + encoding: "application/json"; 35 + body: OutputSchema; 36 + headers?: { [key: string]: string }; 37 + } 38 + 39 + export interface HandlerError { 40 + status: number; 41 + message?: string; 42 + } 43 + 44 + export type HandlerOutput = HandlerError | HandlerSuccess;
+2
lex/types/app/bsky/notification/registerPush.ts
··· 12 12 | "web" 13 13 | (string & globalThis.Record<PropertyKey, never>); 14 14 appId: string; 15 + /** Set to true when the actor is age restricted */ 16 + ageRestricted?: boolean; 15 17 } 16 18 17 19 export interface HandlerInput {
+27
lex/types/app/bsky/notification/unregisterPush.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = globalThis.Record<PropertyKey, never>; 5 + 6 + export interface InputSchema { 7 + serviceDid: string; 8 + token: string; 9 + platform: 10 + | "ios" 11 + | "android" 12 + | "web" 13 + | (string & globalThis.Record<PropertyKey, never>); 14 + appId: string; 15 + } 16 + 17 + export interface HandlerInput { 18 + encoding: "application/json"; 19 + body: InputSchema; 20 + } 21 + 22 + export interface HandlerError { 23 + status: number; 24 + message?: string; 25 + } 26 + 27 + export type HandlerOutput = HandlerError | void;
+1 -2
lex/types/app/bsky/richtext/facet.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 8 7 const is$typed = _is$typed, validate = _validate; 9 8 const id = "app.bsky.richtext.facet";
+177
lex/types/app/bsky/unspecced/defs.ts
··· 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 5 import { is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as AppBskyActorDefs from "../actor/defs.ts"; 7 + import type * as AppBskyFeedDefs from "../feed/defs.ts"; 6 8 7 9 const is$typed = _is$typed, validate = _validate; 8 10 const id = "app.bsky.unspecced.defs"; ··· 73 75 export function validateTrendingTopic<V>(v: V) { 74 76 return validate<TrendingTopic & V>(v, id, hashTrendingTopic); 75 77 } 78 + 79 + export interface SkeletonTrend { 80 + $type?: "app.bsky.unspecced.defs#skeletonTrend"; 81 + topic: string; 82 + displayName: string; 83 + link: string; 84 + startedAt: string; 85 + postCount: number; 86 + status?: "hot" | (string & globalThis.Record<PropertyKey, never>); 87 + category?: string; 88 + dids: (string)[]; 89 + } 90 + 91 + const hashSkeletonTrend = "skeletonTrend"; 92 + 93 + export function isSkeletonTrend<V>(v: V) { 94 + return is$typed(v, id, hashSkeletonTrend); 95 + } 96 + 97 + export function validateSkeletonTrend<V>(v: V) { 98 + return validate<SkeletonTrend & V>(v, id, hashSkeletonTrend); 99 + } 100 + 101 + export interface TrendView { 102 + $type?: "app.bsky.unspecced.defs#trendView"; 103 + topic: string; 104 + displayName: string; 105 + link: string; 106 + startedAt: string; 107 + postCount: number; 108 + status?: "hot" | (string & globalThis.Record<PropertyKey, never>); 109 + category?: string; 110 + actors: (AppBskyActorDefs.ProfileViewBasic)[]; 111 + } 112 + 113 + const hashTrendView = "trendView"; 114 + 115 + export function isTrendView<V>(v: V) { 116 + return is$typed(v, id, hashTrendView); 117 + } 118 + 119 + export function validateTrendView<V>(v: V) { 120 + return validate<TrendView & V>(v, id, hashTrendView); 121 + } 122 + 123 + export interface ThreadItemPost { 124 + $type?: "app.bsky.unspecced.defs#threadItemPost"; 125 + post: AppBskyFeedDefs.PostView; 126 + /** This post has more parents that were not present in the response. This is just a boolean, without the number of parents. */ 127 + moreParents: boolean; 128 + /** This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate. */ 129 + moreReplies: number; 130 + /** This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread. */ 131 + opThread: boolean; 132 + /** The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread. */ 133 + hiddenByThreadgate: boolean; 134 + /** This is by an account muted by the viewer requesting it. */ 135 + mutedByViewer: boolean; 136 + } 137 + 138 + const hashThreadItemPost = "threadItemPost"; 139 + 140 + export function isThreadItemPost<V>(v: V) { 141 + return is$typed(v, id, hashThreadItemPost); 142 + } 143 + 144 + export function validateThreadItemPost<V>(v: V) { 145 + return validate<ThreadItemPost & V>(v, id, hashThreadItemPost); 146 + } 147 + 148 + export interface ThreadItemNoUnauthenticated { 149 + $type?: "app.bsky.unspecced.defs#threadItemNoUnauthenticated"; 150 + } 151 + 152 + const hashThreadItemNoUnauthenticated = "threadItemNoUnauthenticated"; 153 + 154 + export function isThreadItemNoUnauthenticated<V>(v: V) { 155 + return is$typed(v, id, hashThreadItemNoUnauthenticated); 156 + } 157 + 158 + export function validateThreadItemNoUnauthenticated<V>(v: V) { 159 + return validate<ThreadItemNoUnauthenticated & V>( 160 + v, 161 + id, 162 + hashThreadItemNoUnauthenticated, 163 + ); 164 + } 165 + 166 + export interface ThreadItemNotFound { 167 + $type?: "app.bsky.unspecced.defs#threadItemNotFound"; 168 + } 169 + 170 + const hashThreadItemNotFound = "threadItemNotFound"; 171 + 172 + export function isThreadItemNotFound<V>(v: V) { 173 + return is$typed(v, id, hashThreadItemNotFound); 174 + } 175 + 176 + export function validateThreadItemNotFound<V>(v: V) { 177 + return validate<ThreadItemNotFound & V>(v, id, hashThreadItemNotFound); 178 + } 179 + 180 + export interface ThreadItemBlocked { 181 + $type?: "app.bsky.unspecced.defs#threadItemBlocked"; 182 + author: AppBskyFeedDefs.BlockedAuthor; 183 + } 184 + 185 + const hashThreadItemBlocked = "threadItemBlocked"; 186 + 187 + export function isThreadItemBlocked<V>(v: V) { 188 + return is$typed(v, id, hashThreadItemBlocked); 189 + } 190 + 191 + export function validateThreadItemBlocked<V>(v: V) { 192 + return validate<ThreadItemBlocked & V>(v, id, hashThreadItemBlocked); 193 + } 194 + 195 + /** The computed state of the age assurance process, returned to the user in question on certain authenticated requests. */ 196 + export interface AgeAssuranceState { 197 + $type?: "app.bsky.unspecced.defs#ageAssuranceState"; 198 + /** The timestamp when this state was last updated. */ 199 + lastInitiatedAt?: string; 200 + /** The status of the age assurance process. */ 201 + status: 202 + | "unknown" 203 + | "pending" 204 + | "assured" 205 + | "blocked" 206 + | (string & globalThis.Record<PropertyKey, never>); 207 + } 208 + 209 + const hashAgeAssuranceState = "ageAssuranceState"; 210 + 211 + export function isAgeAssuranceState<V>(v: V) { 212 + return is$typed(v, id, hashAgeAssuranceState); 213 + } 214 + 215 + export function validateAgeAssuranceState<V>(v: V) { 216 + return validate<AgeAssuranceState & V>(v, id, hashAgeAssuranceState); 217 + } 218 + 219 + /** Object used to store age assurance data in stash. */ 220 + export interface AgeAssuranceEvent { 221 + $type?: "app.bsky.unspecced.defs#ageAssuranceEvent"; 222 + /** The date and time of this write operation. */ 223 + createdAt: string; 224 + /** The status of the age assurance process. */ 225 + status: 226 + | "unknown" 227 + | "pending" 228 + | "assured" 229 + | (string & globalThis.Record<PropertyKey, never>); 230 + /** The unique identifier for this instance of the age assurance flow, in UUID format. */ 231 + attemptId: string; 232 + /** The email used for AA. */ 233 + email?: string; 234 + /** The IP address used when initiating the AA flow. */ 235 + initIp?: string; 236 + /** The user agent used when initiating the AA flow. */ 237 + initUa?: string; 238 + /** The IP address used when completing the AA flow. */ 239 + completeIp?: string; 240 + /** The user agent used when completing the AA flow. */ 241 + completeUa?: string; 242 + } 243 + 244 + const hashAgeAssuranceEvent = "ageAssuranceEvent"; 245 + 246 + export function isAgeAssuranceEvent<V>(v: V) { 247 + return is$typed(v, id, hashAgeAssuranceEvent); 248 + } 249 + 250 + export function validateAgeAssuranceEvent<V>(v: V) { 251 + return validate<AgeAssuranceEvent & V>(v, id, hashAgeAssuranceEvent); 252 + }
+22
lex/types/app/bsky/unspecced/getAgeAssuranceState.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyUnspeccedDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + export type InputSchema = undefined; 8 + export type OutputSchema = AppBskyUnspeccedDefs.AgeAssuranceState; 9 + export type HandlerInput = void; 10 + 11 + export interface HandlerSuccess { 12 + encoding: "application/json"; 13 + body: OutputSchema; 14 + headers?: { [key: string]: string }; 15 + } 16 + 17 + export interface HandlerError { 18 + status: number; 19 + message?: string; 20 + } 21 + 22 + export type HandlerOutput = HandlerError | HandlerSuccess;
+23
lex/types/app/bsky/unspecced/getConfig.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "app.bsky.unspecced.getConfig"; 9 + 4 10 export type QueryParams = globalThis.Record<PropertyKey, never>; 5 11 export type InputSchema = undefined; 6 12 7 13 export interface OutputSchema { 8 14 checkEmailConfirmed?: boolean; 15 + liveNow?: (LiveNowConfig)[]; 9 16 } 10 17 11 18 export type HandlerInput = void; ··· 22 29 } 23 30 24 31 export type HandlerOutput = HandlerError | HandlerSuccess; 32 + 33 + export interface LiveNowConfig { 34 + $type?: "app.bsky.unspecced.getConfig#liveNowConfig"; 35 + did: string; 36 + domains: (string)[]; 37 + } 38 + 39 + const hashLiveNowConfig = "liveNowConfig"; 40 + 41 + export function isLiveNowConfig<V>(v: V) { 42 + return is$typed(v, id, hashLiveNowConfig); 43 + } 44 + 45 + export function validateLiveNowConfig<V>(v: V) { 46 + return validate<LiveNowConfig & V>(v, id, hashLiveNowConfig); 47 + }
+28
lex/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyGraphDefs from "../graph/defs.ts"; 5 + 6 + export type QueryParams = { 7 + limit: number; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + starterPacks: (AppBskyGraphDefs.StarterPackView)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+28
lex/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = { 5 + /** DID of the account making the request (not included for public/unauthenticated queries). */ 6 + viewer?: string; 7 + limit: number; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + starterPacks: (string)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+53
lex/types/app/bsky/unspecced/getPostThreadOtherV2.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as AppBskyUnspeccedDefs from "./defs.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "app.bsky.unspecced.getPostThreadOtherV2"; 10 + 11 + export type QueryParams = { 12 + /** Reference (AT-URI) to post record. This is the anchor post. */ 13 + anchor: string; 14 + }; 15 + export type InputSchema = undefined; 16 + 17 + export interface OutputSchema { 18 + /** A flat list of other thread items. The depth of each item is indicated by the depth property inside the item. */ 19 + thread: (ThreadItem)[]; 20 + } 21 + 22 + export type HandlerInput = void; 23 + 24 + export interface HandlerSuccess { 25 + encoding: "application/json"; 26 + body: OutputSchema; 27 + headers?: { [key: string]: string }; 28 + } 29 + 30 + export interface HandlerError { 31 + status: number; 32 + message?: string; 33 + } 34 + 35 + export type HandlerOutput = HandlerError | HandlerSuccess; 36 + 37 + export interface ThreadItem { 38 + $type?: "app.bsky.unspecced.getPostThreadOtherV2#threadItem"; 39 + uri: string; 40 + /** The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths. */ 41 + depth: number; 42 + value: $Typed<AppBskyUnspeccedDefs.ThreadItemPost> | { $type: string }; 43 + } 44 + 45 + const hashThreadItem = "threadItem"; 46 + 47 + export function isThreadItem<V>(v: V) { 48 + return is$typed(v, id, hashThreadItem); 49 + } 50 + 51 + export function validateThreadItem<V>(v: V) { 52 + return validate<ThreadItem & V>(v, id, hashThreadItem); 53 + }
+74
lex/types/app/bsky/unspecced/getPostThreadV2.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as AppBskyFeedDefs from "../feed/defs.ts"; 7 + import type * as AppBskyUnspeccedDefs from "./defs.ts"; 8 + 9 + const is$typed = _is$typed, validate = _validate; 10 + const id = "app.bsky.unspecced.getPostThreadV2"; 11 + 12 + export type QueryParams = { 13 + /** Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post. */ 14 + anchor: string; 15 + /** Whether to include parents above the anchor. */ 16 + above: boolean; 17 + /** How many levels of replies to include below the anchor. */ 18 + below: number; 19 + /** Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated). */ 20 + branchingFactor: number; 21 + /** Sorting for the thread replies. */ 22 + sort: 23 + | "newest" 24 + | "oldest" 25 + | "top" 26 + | (string & globalThis.Record<PropertyKey, never>); 27 + }; 28 + export type InputSchema = undefined; 29 + 30 + export interface OutputSchema { 31 + /** A flat list of thread items. The depth of each item is indicated by the depth property inside the item. */ 32 + thread: (ThreadItem)[]; 33 + threadgate?: AppBskyFeedDefs.ThreadgateView; 34 + /** Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them. */ 35 + hasOtherReplies: boolean; 36 + } 37 + 38 + export type HandlerInput = void; 39 + 40 + export interface HandlerSuccess { 41 + encoding: "application/json"; 42 + body: OutputSchema; 43 + headers?: { [key: string]: string }; 44 + } 45 + 46 + export interface HandlerError { 47 + status: number; 48 + message?: string; 49 + } 50 + 51 + export type HandlerOutput = HandlerError | HandlerSuccess; 52 + 53 + export interface ThreadItem { 54 + $type?: "app.bsky.unspecced.getPostThreadV2#threadItem"; 55 + uri: string; 56 + /** The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths. */ 57 + depth: number; 58 + value: 59 + | $Typed<AppBskyUnspeccedDefs.ThreadItemPost> 60 + | $Typed<AppBskyUnspeccedDefs.ThreadItemNoUnauthenticated> 61 + | $Typed<AppBskyUnspeccedDefs.ThreadItemNotFound> 62 + | $Typed<AppBskyUnspeccedDefs.ThreadItemBlocked> 63 + | { $type: string }; 64 + } 65 + 66 + const hashThreadItem = "threadItem"; 67 + 68 + export function isThreadItem<V>(v: V) { 69 + return is$typed(v, id, hashThreadItem); 70 + } 71 + 72 + export function validateThreadItem<V>(v: V) { 73 + return validate<ThreadItem & V>(v, id, hashThreadItem); 74 + }
+28
lex/types/app/bsky/unspecced/getSuggestedFeeds.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyFeedDefs from "../feed/defs.ts"; 5 + 6 + export type QueryParams = { 7 + limit: number; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + feeds: (AppBskyFeedDefs.GeneratorView)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+28
lex/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = { 5 + /** DID of the account making the request (not included for public/unauthenticated queries). */ 6 + viewer?: string; 7 + limit: number; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + feeds: (string)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+28
lex/types/app/bsky/unspecced/getSuggestedStarterPacks.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyGraphDefs from "../graph/defs.ts"; 5 + 6 + export type QueryParams = { 7 + limit: number; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + starterPacks: (AppBskyGraphDefs.StarterPackView)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+28
lex/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = { 5 + /** DID of the account making the request (not included for public/unauthenticated queries). */ 6 + viewer?: string; 7 + limit: number; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + starterPacks: (string)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+30
lex/types/app/bsky/unspecced/getSuggestedUsers.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyActorDefs from "../actor/defs.ts"; 5 + 6 + export type QueryParams = { 7 + /** Category of users to get suggestions for. */ 8 + category?: string; 9 + limit: number; 10 + }; 11 + export type InputSchema = undefined; 12 + 13 + export interface OutputSchema { 14 + actors: (AppBskyActorDefs.ProfileView)[]; 15 + } 16 + 17 + export type HandlerInput = void; 18 + 19 + export interface HandlerSuccess { 20 + encoding: "application/json"; 21 + body: OutputSchema; 22 + headers?: { [key: string]: string }; 23 + } 24 + 25 + export interface HandlerError { 26 + status: number; 27 + message?: string; 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess;
+30
lex/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = { 5 + /** DID of the account making the request (not included for public/unauthenticated queries). */ 6 + viewer?: string; 7 + /** Category of users to get suggestions for. */ 8 + category?: string; 9 + limit: number; 10 + }; 11 + export type InputSchema = undefined; 12 + 13 + export interface OutputSchema { 14 + dids: (string)[]; 15 + } 16 + 17 + export type HandlerInput = void; 18 + 19 + export interface HandlerSuccess { 20 + encoding: "application/json"; 21 + body: OutputSchema; 22 + headers?: { [key: string]: string }; 23 + } 24 + 25 + export interface HandlerError { 26 + status: number; 27 + message?: string; 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess;
+28
lex/types/app/bsky/unspecced/getTrends.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyUnspeccedDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + limit: number; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + trends: (AppBskyUnspeccedDefs.TrendView)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+30
lex/types/app/bsky/unspecced/getTrendsSkeleton.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyUnspeccedDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + /** DID of the account making the request (not included for public/unauthenticated queries). */ 8 + viewer?: string; 9 + limit: number; 10 + }; 11 + export type InputSchema = undefined; 12 + 13 + export interface OutputSchema { 14 + trends: (AppBskyUnspeccedDefs.SkeletonTrend)[]; 15 + } 16 + 17 + export type HandlerInput = void; 18 + 19 + export interface HandlerSuccess { 20 + encoding: "application/json"; 21 + body: OutputSchema; 22 + headers?: { [key: string]: string }; 23 + } 24 + 25 + export interface HandlerError { 26 + status: number; 27 + message?: string; 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess;
+36
lex/types/app/bsky/unspecced/initAgeAssurance.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as AppBskyUnspeccedDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** The user's email address to receive assurance instructions. */ 10 + email: string; 11 + /** The user's preferred language for communication during the assurance process. */ 12 + language: string; 13 + /** An ISO 3166-1 alpha-2 code of the user's location. */ 14 + countryCode: string; 15 + } 16 + 17 + export type OutputSchema = AppBskyUnspeccedDefs.AgeAssuranceState; 18 + 19 + export interface HandlerInput { 20 + encoding: "application/json"; 21 + body: InputSchema; 22 + } 23 + 24 + export interface HandlerSuccess { 25 + encoding: "application/json"; 26 + body: OutputSchema; 27 + headers?: { [key: string]: string }; 28 + } 29 + 30 + export interface HandlerError { 31 + status: number; 32 + message?: string; 33 + error?: "InvalidEmail" | "DidTooLong" | "InvalidInitiation"; 34 + } 35 + 36 + export type HandlerOutput = HandlerError | HandlerSuccess;
+1 -1
lex/types/app/bsky/video/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 6 import { is$typed as _is$typed } from "../../../../util.ts"; 7 7
+1 -2
lex/types/app/bsky/video/uploadVideo.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 4 import type * as AppBskyVideoDefs from "./defs.ts"; 6 5 7 6 export type QueryParams = globalThis.Record<PropertyKey, never>; ··· 13 12 14 13 export interface HandlerInput { 15 14 encoding: "video/mp4"; 16 - body: stream.Readable; 15 + body: ReadableStream; 17 16 } 18 17 19 18 export interface HandlerSuccess {
+2
lex/types/chat/bsky/actor/declaration.ts
··· 26 26 export function validateRecord<V>(v: V) { 27 27 return validate<Record & V>(v, id, hashRecord, true); 28 28 } 29 + 30 + export type Main = Record;
+2 -1
lex/types/chat/bsky/actor/defs.ts
··· 18 18 associated?: AppBskyActorDefs.ProfileAssociated; 19 19 viewer?: AppBskyActorDefs.ViewerState; 20 20 labels?: (ComAtprotoLabelDefs.Label)[]; 21 - /** Set to true when the actor cannot actively participate in converations */ 21 + /** Set to true when the actor cannot actively participate in conversations */ 22 22 chatDisabled?: boolean; 23 + verification?: AppBskyActorDefs.VerificationState; 23 24 } 24 25 25 26 const hashProfileViewBasic = "profileViewBasic";
+1 -3
lex/types/chat/bsky/actor/exportAccountData.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - 6 4 export type QueryParams = globalThis.Record<PropertyKey, never>; 7 5 export type InputSchema = undefined; 8 6 export type HandlerInput = void; 9 7 10 8 export interface HandlerSuccess { 11 9 encoding: "application/jsonl"; 12 - body: Uint8Array | stream.Readable; 10 + body: Uint8Array | ReadableStream; 13 11 headers?: { [key: string]: string }; 14 12 } 15 13
+38
lex/types/chat/bsky/convo/addReaction.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ChatBskyConvoDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + convoId: string; 10 + messageId: string; 11 + value: string; 12 + } 13 + 14 + export interface OutputSchema { 15 + message: ChatBskyConvoDefs.MessageView; 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: "application/json"; 20 + body: InputSchema; 21 + } 22 + 23 + export interface HandlerSuccess { 24 + encoding: "application/json"; 25 + body: OutputSchema; 26 + headers?: { [key: string]: string }; 27 + } 28 + 29 + export interface HandlerError { 30 + status: number; 31 + message?: string; 32 + error?: 33 + | "ReactionMessageDeleted" 34 + | "ReactionLimitReached" 35 + | "ReactionInvalidValue"; 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess;
+92 -2
lex/types/chat/bsky/convo/defs.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as AppBskyRichtextFacet from "../../../app/bsky/richtext/facet.ts"; 8 7 import type * as AppBskyEmbedRecord from "../../../app/bsky/embed/record.ts"; 9 8 import type * as ChatBskyActorDefs from "../actor/defs.ts"; ··· 54 53 /** Annotations of text (mentions, URLs, hashtags, etc) */ 55 54 facets?: (AppBskyRichtextFacet.Main)[]; 56 55 embed?: $Typed<AppBskyEmbedRecord.View> | { $type: string }; 56 + /** Reactions to this message, in ascending order of creation time. */ 57 + reactions?: (ReactionView)[]; 57 58 sender: MessageViewSender; 58 59 sentAt: string; 59 60 } ··· 101 102 return validate<MessageViewSender & V>(v, id, hashMessageViewSender); 102 103 } 103 104 105 + export interface ReactionView { 106 + $type?: "chat.bsky.convo.defs#reactionView"; 107 + value: string; 108 + sender: ReactionViewSender; 109 + createdAt: string; 110 + } 111 + 112 + const hashReactionView = "reactionView"; 113 + 114 + export function isReactionView<V>(v: V) { 115 + return is$typed(v, id, hashReactionView); 116 + } 117 + 118 + export function validateReactionView<V>(v: V) { 119 + return validate<ReactionView & V>(v, id, hashReactionView); 120 + } 121 + 122 + export interface ReactionViewSender { 123 + $type?: "chat.bsky.convo.defs#reactionViewSender"; 124 + did: string; 125 + } 126 + 127 + const hashReactionViewSender = "reactionViewSender"; 128 + 129 + export function isReactionViewSender<V>(v: V) { 130 + return is$typed(v, id, hashReactionViewSender); 131 + } 132 + 133 + export function validateReactionViewSender<V>(v: V) { 134 + return validate<ReactionViewSender & V>(v, id, hashReactionViewSender); 135 + } 136 + 137 + export interface MessageAndReactionView { 138 + $type?: "chat.bsky.convo.defs#messageAndReactionView"; 139 + message: MessageView; 140 + reaction: ReactionView; 141 + } 142 + 143 + const hashMessageAndReactionView = "messageAndReactionView"; 144 + 145 + export function isMessageAndReactionView<V>(v: V) { 146 + return is$typed(v, id, hashMessageAndReactionView); 147 + } 148 + 149 + export function validateMessageAndReactionView<V>(v: V) { 150 + return validate<MessageAndReactionView & V>( 151 + v, 152 + id, 153 + hashMessageAndReactionView, 154 + ); 155 + } 156 + 104 157 export interface ConvoView { 105 158 $type?: "chat.bsky.convo.defs#convoView"; 106 159 id: string; ··· 109 162 lastMessage?: $Typed<MessageView> | $Typed<DeletedMessageView> | { 110 163 $type: string; 111 164 }; 165 + lastReaction?: $Typed<MessageAndReactionView> | { $type: string }; 112 166 muted: boolean; 113 167 status?: 114 168 | "request" ··· 257 311 export function validateLogReadMessage<V>(v: V) { 258 312 return validate<LogReadMessage & V>(v, id, hashLogReadMessage); 259 313 } 314 + 315 + export interface LogAddReaction { 316 + $type?: "chat.bsky.convo.defs#logAddReaction"; 317 + rev: string; 318 + convoId: string; 319 + message: $Typed<MessageView> | $Typed<DeletedMessageView> | { $type: string }; 320 + reaction: ReactionView; 321 + } 322 + 323 + const hashLogAddReaction = "logAddReaction"; 324 + 325 + export function isLogAddReaction<V>(v: V) { 326 + return is$typed(v, id, hashLogAddReaction); 327 + } 328 + 329 + export function validateLogAddReaction<V>(v: V) { 330 + return validate<LogAddReaction & V>(v, id, hashLogAddReaction); 331 + } 332 + 333 + export interface LogRemoveReaction { 334 + $type?: "chat.bsky.convo.defs#logRemoveReaction"; 335 + rev: string; 336 + convoId: string; 337 + message: $Typed<MessageView> | $Typed<DeletedMessageView> | { $type: string }; 338 + reaction: ReactionView; 339 + } 340 + 341 + const hashLogRemoveReaction = "logRemoveReaction"; 342 + 343 + export function isLogRemoveReaction<V>(v: V) { 344 + return is$typed(v, id, hashLogRemoveReaction); 345 + } 346 + 347 + export function validateLogRemoveReaction<V>(v: V) { 348 + return validate<LogRemoveReaction & V>(v, id, hashLogRemoveReaction); 349 + }
+6 -1
lex/types/chat/bsky/convo/getLog.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ChatBskyConvoDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = { ··· 15 15 | $Typed<ChatBskyConvoDefs.LogBeginConvo> 16 16 | $Typed<ChatBskyConvoDefs.LogAcceptConvo> 17 17 | $Typed<ChatBskyConvoDefs.LogLeaveConvo> 18 + | $Typed<ChatBskyConvoDefs.LogMuteConvo> 19 + | $Typed<ChatBskyConvoDefs.LogUnmuteConvo> 18 20 | $Typed<ChatBskyConvoDefs.LogCreateMessage> 19 21 | $Typed<ChatBskyConvoDefs.LogDeleteMessage> 22 + | $Typed<ChatBskyConvoDefs.LogReadMessage> 23 + | $Typed<ChatBskyConvoDefs.LogAddReaction> 24 + | $Typed<ChatBskyConvoDefs.LogRemoveReaction> 20 25 | { $type: string } 21 26 )[]; 22 27 }
+1 -1
lex/types/chat/bsky/convo/getMessages.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ChatBskyConvoDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+35
lex/types/chat/bsky/convo/removeReaction.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ChatBskyConvoDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + convoId: string; 10 + messageId: string; 11 + value: string; 12 + } 13 + 14 + export interface OutputSchema { 15 + message: ChatBskyConvoDefs.MessageView; 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: "application/json"; 20 + body: InputSchema; 21 + } 22 + 23 + export interface HandlerSuccess { 24 + encoding: "application/json"; 25 + body: OutputSchema; 26 + headers?: { [key: string]: string }; 27 + } 28 + 29 + export interface HandlerError { 30 + status: number; 31 + message?: string; 32 + error?: "ReactionMessageDeleted" | "ReactionInvalidValue"; 33 + } 34 + 35 + export type HandlerOutput = HandlerError | HandlerSuccess;
+1 -1
lex/types/chat/bsky/moderation/getMessageContext.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ChatBskyConvoDefs from "../convo/defs.ts"; 6 6 7 7 export type QueryParams = {
+1 -1
lex/types/com/atproto/admin/getSubjectStatus.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ComAtprotoAdminDefs from "./defs.ts"; 6 6 import type * as ComAtprotoRepoStrongRef from "../repo/strongRef.ts"; 7 7
+22
lex/types/com/atproto/admin/updateAccountSigningKey.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = globalThis.Record<PropertyKey, never>; 5 + 6 + export interface InputSchema { 7 + did: string; 8 + /** Did-key formatted public key */ 9 + signingKey: string; 10 + } 11 + 12 + export interface HandlerInput { 13 + encoding: "application/json"; 14 + body: InputSchema; 15 + } 16 + 17 + export interface HandlerError { 18 + status: number; 19 + message?: string; 20 + } 21 + 22 + export type HandlerOutput = HandlerError | void;
+1 -1
lex/types/com/atproto/admin/updateSubjectStatus.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ComAtprotoAdminDefs from "./defs.ts"; 6 6 import type * as ComAtprotoRepoStrongRef from "../repo/strongRef.ts"; 7 7
+27
lex/types/com/atproto/identity/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "com.atproto.identity.defs"; 9 + 10 + export interface IdentityInfo { 11 + $type?: "com.atproto.identity.defs#identityInfo"; 12 + did: string; 13 + /** The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document. */ 14 + handle: string; 15 + /** The complete DID document for the identity. */ 16 + didDoc: { [_ in string]: unknown }; 17 + } 18 + 19 + const hashIdentityInfo = "identityInfo"; 20 + 21 + export function isIdentityInfo<V>(v: V) { 22 + return is$typed(v, id, hashIdentityInfo); 23 + } 24 + 25 + export function validateIdentityInfo<V>(v: V) { 26 + return validate<IdentityInfo & V>(v, id, hashIdentityInfo); 27 + }
+31
lex/types/com/atproto/identity/refreshIdentity.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ComAtprotoIdentityDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + identifier: string; 10 + } 11 + 12 + export type OutputSchema = ComAtprotoIdentityDefs.IdentityInfo; 13 + 14 + export interface HandlerInput { 15 + encoding: "application/json"; 16 + body: InputSchema; 17 + } 18 + 19 + export interface HandlerSuccess { 20 + encoding: "application/json"; 21 + body: OutputSchema; 22 + headers?: { [key: string]: string }; 23 + } 24 + 25 + export interface HandlerError { 26 + status: number; 27 + message?: string; 28 + error?: "HandleNotFound" | "DidNotFound" | "DidDeactivated"; 29 + } 30 + 31 + export type HandlerOutput = HandlerError | HandlerSuccess;
+29
lex/types/com/atproto/identity/resolveDid.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = { 5 + /** DID to resolve. */ 6 + did: string; 7 + }; 8 + export type InputSchema = undefined; 9 + 10 + export interface OutputSchema { 11 + /** The complete DID document for the identity. */ 12 + didDoc: { [_ in string]: unknown }; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + error?: "DidNotFound" | "DidDeactivated"; 27 + } 28 + 29 + export type HandlerOutput = HandlerError | HandlerSuccess;
+1
lex/types/com/atproto/identity/resolveHandle.ts
··· 22 22 export interface HandlerError { 23 23 status: number; 24 24 message?: string; 25 + error?: "HandleNotFound"; 25 26 } 26 27 27 28 export type HandlerOutput = HandlerError | HandlerSuccess;
+26
lex/types/com/atproto/identity/resolveIdentity.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ComAtprotoIdentityDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + /** Handle or DID to resolve. */ 8 + identifier: string; 9 + }; 10 + export type InputSchema = undefined; 11 + export type OutputSchema = ComAtprotoIdentityDefs.IdentityInfo; 12 + export type HandlerInput = void; 13 + 14 + export interface HandlerSuccess { 15 + encoding: "application/json"; 16 + body: OutputSchema; 17 + headers?: { [key: string]: string }; 18 + } 19 + 20 + export interface HandlerError { 21 + status: number; 22 + message?: string; 23 + error?: "HandleNotFound" | "DidNotFound" | "DidDeactivated"; 24 + } 25 + 26 + export type HandlerOutput = HandlerError | HandlerSuccess;
+2 -3
lex/types/com/atproto/label/subscribeLabels.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 7 - import { ErrorFrame } from "@atp/xrpc-server"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + import type { ErrorFrame } from "@atp/xrpc-server"; 8 7 import type * as ComAtprotoLabelDefs from "./defs.ts"; 9 8 10 9 const is$typed = _is$typed, validate = _validate;
+34
lex/types/com/atproto/lexicon/resolveLexicon.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ComAtprotoLexiconSchema from "./schema.ts"; 5 + 6 + export type QueryParams = { 7 + /** The lexicon NSID to resolve. */ 8 + nsid: string; 9 + }; 10 + export type InputSchema = undefined; 11 + 12 + export interface OutputSchema { 13 + /** The CID of the lexicon schema record. */ 14 + cid: string; 15 + schema: ComAtprotoLexiconSchema.Main; 16 + /** The AT-URI of the lexicon schema record. */ 17 + uri: string; 18 + } 19 + 20 + export type HandlerInput = void; 21 + 22 + export interface HandlerSuccess { 23 + encoding: "application/json"; 24 + body: OutputSchema; 25 + headers?: { [key: string]: string }; 26 + } 27 + 28 + export interface HandlerError { 29 + status: number; 30 + message?: string; 31 + error?: "LexiconNotFound"; 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess;
+2
lex/types/com/atproto/lexicon/schema.ts
··· 23 23 export function validateRecord<V>(v: V) { 24 24 return validate<Record & V>(v, id, hashRecord, true); 25 25 } 26 + 27 + export type Main = Record;
+25 -1
lex/types/com/atproto/moderation/createReport.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 5 6 import type * as ComAtprotoModerationDefs from "./defs.ts"; 6 7 import type * as ComAtprotoAdminDefs from "../admin/defs.ts"; 7 8 import type * as ComAtprotoRepoStrongRef from "../repo/strongRef.ts"; 9 + 10 + const is$typed = _is$typed, validate = _validate; 11 + const id = "com.atproto.moderation.createReport"; 8 12 9 13 export type QueryParams = globalThis.Record<PropertyKey, never>; 10 14 ··· 16 20 | $Typed<ComAtprotoAdminDefs.RepoRef> 17 21 | $Typed<ComAtprotoRepoStrongRef.Main> 18 22 | { $type: string }; 23 + modTool?: ModTool; 19 24 } 20 25 21 26 export interface OutputSchema { ··· 47 52 } 48 53 49 54 export type HandlerOutput = HandlerError | HandlerSuccess; 55 + 56 + /** Moderation tool information for tracing the source of the action */ 57 + export interface ModTool { 58 + $type?: "com.atproto.moderation.createReport#modTool"; 59 + /** Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome') */ 60 + name: string; 61 + /** Additional arbitrary metadata about the source */ 62 + meta?: { [_ in string]: unknown }; 63 + } 64 + 65 + const hashModTool = "modTool"; 66 + 67 + export function isModTool<V>(v: V) { 68 + return is$typed(v, id, hashModTool); 69 + } 70 + 71 + export function validateModTool<V>(v: V) { 72 + return validate<ModTool & V>(v, id, hashModTool); 73 + }
+47 -7
lex/types/com/atproto/moderation/defs.ts
··· 11 11 | "com.atproto.moderation.defs#reasonRude" 12 12 | "com.atproto.moderation.defs#reasonOther" 13 13 | "com.atproto.moderation.defs#reasonAppeal" 14 + | "tools.ozone.report.defs#reasonAppeal" 15 + | "tools.ozone.report.defs#reasonOther" 16 + | "tools.ozone.report.defs#reasonViolenceAnimal" 17 + | "tools.ozone.report.defs#reasonViolenceThreats" 18 + | "tools.ozone.report.defs#reasonViolenceGraphicContent" 19 + | "tools.ozone.report.defs#reasonViolenceGlorification" 20 + | "tools.ozone.report.defs#reasonViolenceExtremistContent" 21 + | "tools.ozone.report.defs#reasonViolenceTrafficking" 22 + | "tools.ozone.report.defs#reasonViolenceOther" 23 + | "tools.ozone.report.defs#reasonSexualAbuseContent" 24 + | "tools.ozone.report.defs#reasonSexualNCII" 25 + | "tools.ozone.report.defs#reasonSexualDeepfake" 26 + | "tools.ozone.report.defs#reasonSexualAnimal" 27 + | "tools.ozone.report.defs#reasonSexualUnlabeled" 28 + | "tools.ozone.report.defs#reasonSexualOther" 29 + | "tools.ozone.report.defs#reasonChildSafetyCSAM" 30 + | "tools.ozone.report.defs#reasonChildSafetyGroom" 31 + | "tools.ozone.report.defs#reasonChildSafetyPrivacy" 32 + | "tools.ozone.report.defs#reasonChildSafetyHarassment" 33 + | "tools.ozone.report.defs#reasonChildSafetyOther" 34 + | "tools.ozone.report.defs#reasonHarassmentTroll" 35 + | "tools.ozone.report.defs#reasonHarassmentTargeted" 36 + | "tools.ozone.report.defs#reasonHarassmentHateSpeech" 37 + | "tools.ozone.report.defs#reasonHarassmentDoxxing" 38 + | "tools.ozone.report.defs#reasonHarassmentOther" 39 + | "tools.ozone.report.defs#reasonMisleadingBot" 40 + | "tools.ozone.report.defs#reasonMisleadingImpersonation" 41 + | "tools.ozone.report.defs#reasonMisleadingSpam" 42 + | "tools.ozone.report.defs#reasonMisleadingScam" 43 + | "tools.ozone.report.defs#reasonMisleadingElections" 44 + | "tools.ozone.report.defs#reasonMisleadingOther" 45 + | "tools.ozone.report.defs#reasonRuleSiteSecurity" 46 + | "tools.ozone.report.defs#reasonRuleProhibitedSales" 47 + | "tools.ozone.report.defs#reasonRuleBanEvasion" 48 + | "tools.ozone.report.defs#reasonRuleOther" 49 + | "tools.ozone.report.defs#reasonSelfHarmContent" 50 + | "tools.ozone.report.defs#reasonSelfHarmED" 51 + | "tools.ozone.report.defs#reasonSelfHarmStunts" 52 + | "tools.ozone.report.defs#reasonSelfHarmSubstances" 53 + | "tools.ozone.report.defs#reasonSelfHarmOther" 14 54 | (string & globalThis.Record<PropertyKey, never>); 15 55 16 - /** Spam: frequent unwanted promotion, replies, mentions */ 56 + /** Spam: frequent unwanted promotion, replies, mentions. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingSpam`. */ 17 57 export const REASONSPAM = `${id}#reasonSpam`; 18 - /** Direct violation of server rules, laws, terms of service */ 58 + /** Direct violation of server rules, laws, terms of service. Prefer new lexicon definition `tools.ozone.report.defs#reasonRuleOther`. */ 19 59 export const REASONVIOLATION = `${id}#reasonViolation`; 20 - /** Misleading identity, affiliation, or content */ 60 + /** Misleading identity, affiliation, or content. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingOther`. */ 21 61 export const REASONMISLEADING = `${id}#reasonMisleading`; 22 - /** Unwanted or mislabeled sexual content */ 62 + /** Unwanted or mislabeled sexual content. Prefer new lexicon definition `tools.ozone.report.defs#reasonSexualUnlabeled`. */ 23 63 export const REASONSEXUAL = `${id}#reasonSexual`; 24 - /** Rude, harassing, explicit, or otherwise unwelcoming behavior */ 64 + /** Rude, harassing, explicit, or otherwise unwelcoming behavior. Prefer new lexicon definition `tools.ozone.report.defs#reasonHarassmentOther`. */ 25 65 export const REASONRUDE = `${id}#reasonRude`; 26 - /** Other: reports not falling under another report category */ 66 + /** Reports not falling under another report category. Prefer new lexicon definition `tools.ozone.report.defs#reasonOther`. */ 27 67 export const REASONOTHER = `${id}#reasonOther`; 28 - /** Appeal: appeal a previously taken moderation action */ 68 + /** Appeal a previously taken moderation action */ 29 69 export const REASONAPPEAL = `${id}#reasonAppeal`; 30 70 31 71 /** Tag describing a type of subject that might be reported. */
+2 -2
lex/types/com/atproto/repo/applyWrites.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as ComAtprotoRepoDefs from "./defs.ts"; 8 7 9 8 const is$typed = _is$typed, validate = _validate; ··· 50 49 export interface Create { 51 50 $type?: "com.atproto.repo.applyWrites#create"; 52 51 collection: string; 52 + /** NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility. */ 53 53 rkey?: string; 54 54 value: { [_ in string]: unknown }; 55 55 }
+1 -3
lex/types/com/atproto/repo/importRepo.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - 6 4 export type QueryParams = globalThis.Record<PropertyKey, never>; 7 5 export type InputSchema = string | Uint8Array | Blob; 8 6 9 7 export interface HandlerInput { 10 8 encoding: "application/vnd.ipld.car"; 11 - body: stream.Readable; 9 + body: ReadableStream; 12 10 } 13 11 14 12 export interface HandlerError {
-4
lex/types/com/atproto/repo/listRecords.ts
··· 15 15 /** The number of records to return. */ 16 16 limit: number; 17 17 cursor?: string; 18 - /** DEPRECATED: The lowest sort-ordered rkey to start from (exclusive) */ 19 - rkeyStart?: string; 20 - /** DEPRECATED: The highest sort-ordered rkey to stop at (exclusive) */ 21 - rkeyEnd?: string; 22 18 /** Flag to reverse the order of the returned records. */ 23 19 reverse?: boolean; 24 20 };
+2 -3
lex/types/com/atproto/repo/uploadBlob.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 6 5 7 6 export type QueryParams = globalThis.Record<PropertyKey, never>; 8 7 export type InputSchema = string | Uint8Array | Blob; ··· 13 12 14 13 export interface HandlerInput { 15 14 encoding: "*/*"; 16 - body: stream.Readable; 15 + body: ReadableStream; 17 16 } 18 17 19 18 export interface HandlerSuccess {
+10
lex/types/com/atproto/sync/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type HostStatus = 5 + | "active" 6 + | "idle" 7 + | "offline" 8 + | "throttled" 9 + | "banned" 10 + | (string & globalThis.Record<PropertyKey, never>);
+1 -3
lex/types/com/atproto/sync/getBlob.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - 6 4 export type QueryParams = { 7 5 /** The DID of the account. */ 8 6 did: string; ··· 14 12 15 13 export interface HandlerSuccess { 16 14 encoding: "*/*"; 17 - body: Uint8Array | stream.Readable; 15 + body: Uint8Array | ReadableStream; 18 16 headers?: { [key: string]: string }; 19 17 } 20 18
+1 -3
lex/types/com/atproto/sync/getBlocks.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - 6 4 export type QueryParams = { 7 5 /** The DID of the repo. */ 8 6 did: string; ··· 13 11 14 12 export interface HandlerSuccess { 15 13 encoding: "application/vnd.ipld.car"; 16 - body: Uint8Array | stream.Readable; 14 + body: Uint8Array | ReadableStream; 17 15 headers?: { [key: string]: string }; 18 16 } 19 17
+1 -3
lex/types/com/atproto/sync/getCheckout.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - 6 4 export type QueryParams = { 7 5 /** The DID of the repo. */ 8 6 did: string; ··· 12 10 13 11 export interface HandlerSuccess { 14 12 encoding: "application/vnd.ipld.car"; 15 - body: Uint8Array | stream.Readable; 13 + body: Uint8Array | ReadableStream; 16 14 headers?: { [key: string]: string }; 17 15 } 18 16
+35
lex/types/com/atproto/sync/getHostStatus.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ComAtprotoSyncDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + /** Hostname of the host (eg, PDS or relay) being queried. */ 8 + hostname: string; 9 + }; 10 + export type InputSchema = undefined; 11 + 12 + export interface OutputSchema { 13 + hostname: string; 14 + /** Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor). */ 15 + seq?: number; 16 + /** Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts. */ 17 + accountCount?: number; 18 + status?: ComAtprotoSyncDefs.HostStatus; 19 + } 20 + 21 + export type HandlerInput = void; 22 + 23 + export interface HandlerSuccess { 24 + encoding: "application/json"; 25 + body: OutputSchema; 26 + headers?: { [key: string]: string }; 27 + } 28 + 29 + export interface HandlerError { 30 + status: number; 31 + message?: string; 32 + error?: "HostNotFound"; 33 + } 34 + 35 + export type HandlerOutput = HandlerError | HandlerSuccess;
+1 -5
lex/types/com/atproto/sync/getRecord.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - 6 4 export type QueryParams = { 7 5 /** The DID of the repo. */ 8 6 did: string; 9 7 collection: string; 10 8 /** Record Key */ 11 9 rkey: string; 12 - /** DEPRECATED: referenced a repo commit by CID, and retrieved record as of that commit */ 13 - commit?: string; 14 10 }; 15 11 export type InputSchema = undefined; 16 12 export type HandlerInput = void; 17 13 18 14 export interface HandlerSuccess { 19 15 encoding: "application/vnd.ipld.car"; 20 - body: Uint8Array | stream.Readable; 16 + body: Uint8Array | ReadableStream; 21 17 headers?: { [key: string]: string }; 22 18 } 23 19
+1 -3
lex/types/com/atproto/sync/getRepo.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 - 6 4 export type QueryParams = { 7 5 /** The DID of the repo. */ 8 6 did: string; ··· 14 12 15 13 export interface HandlerSuccess { 16 14 encoding: "application/vnd.ipld.car"; 17 - body: Uint8Array | stream.Readable; 15 + body: Uint8Array | ReadableStream; 18 16 headers?: { [key: string]: string }; 19 17 } 20 18
+3
lex/types/com/atproto/sync/getRepoStatus.ts
··· 14 14 status?: 15 15 | "takendown" 16 16 | "suspended" 17 + | "deleted" 17 18 | "deactivated" 19 + | "desynchronized" 20 + | "throttled" 18 21 | (string & globalThis.Record<PropertyKey, never>); 19 22 /** Optional field, the current rev of the repo, if active=true */ 20 23 rev?: string;
+56
lex/types/com/atproto/sync/listHosts.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as ComAtprotoSyncDefs from "./defs.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "com.atproto.sync.listHosts"; 10 + 11 + export type QueryParams = { 12 + limit: number; 13 + cursor?: string; 14 + }; 15 + export type InputSchema = undefined; 16 + 17 + export interface OutputSchema { 18 + cursor?: string; 19 + /** Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first. */ 20 + hosts: (Host)[]; 21 + } 22 + 23 + export type HandlerInput = void; 24 + 25 + export interface HandlerSuccess { 26 + encoding: "application/json"; 27 + body: OutputSchema; 28 + headers?: { [key: string]: string }; 29 + } 30 + 31 + export interface HandlerError { 32 + status: number; 33 + message?: string; 34 + } 35 + 36 + export type HandlerOutput = HandlerError | HandlerSuccess; 37 + 38 + export interface Host { 39 + $type?: "com.atproto.sync.listHosts#host"; 40 + /** hostname of server; not a URL (no scheme) */ 41 + hostname: string; 42 + /** Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor). */ 43 + seq?: number; 44 + accountCount?: number; 45 + status?: ComAtprotoSyncDefs.HostStatus; 46 + } 47 + 48 + const hashHost = "host"; 49 + 50 + export function isHost<V>(v: V) { 51 + return is$typed(v, id, hashHost); 52 + } 53 + 54 + export function validateHost<V>(v: V) { 55 + return validate<Host & V>(v, id, hashHost); 56 + }
+3
lex/types/com/atproto/sync/listRepos.ts
··· 44 44 status?: 45 45 | "takendown" 46 46 | "suspended" 47 + | "deleted" 47 48 | "deactivated" 49 + | "desynchronized" 50 + | "throttled" 48 51 | (string & globalThis.Record<PropertyKey, never>); 49 52 } 50 53
+1
lex/types/com/atproto/sync/requestCrawl.ts
··· 16 16 export interface HandlerError { 17 17 status: number; 18 18 message?: string; 19 + error?: "HostBanned"; 19 20 } 20 21 21 22 export type HandlerOutput = HandlerError | void;
+38 -68
lex/types/com/atproto/sync/subscribeRepos.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { CID } from "multiformats/cid"; 4 + import type { CID } from "multiformats/cid"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 - import { is$typed as _is$typed } from "../../../../util.ts"; 7 - import { type $Typed } from "../../../../util.ts"; 8 - import { ErrorFrame } from "@atp/xrpc-server"; 6 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 + import type { ErrorFrame } from "@atp/xrpc-server"; 9 8 10 9 const is$typed = _is$typed, validate = _validate; 11 10 const id = "com.atproto.sync.subscribeRepos"; ··· 16 15 }; 17 16 export type OutputSchema = 18 17 | $Typed<Commit> 18 + | $Typed<Sync> 19 19 | $Typed<Identity> 20 20 | $Typed<Account> 21 - | $Typed<Handle> 22 - | $Typed<Migrate> 23 - | $Typed<Tombstone> 24 21 | $Typed<Info> 25 22 | { $type: string }; 26 23 export type HandlerError = ErrorFrame<"FutureCursor" | "ConsumerTooSlow">; ··· 33 30 seq: number; 34 31 /** DEPRECATED -- unused */ 35 32 rebase: boolean; 36 - /** 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. */ 33 + /** 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. */ 37 34 tooBig: boolean; 38 - /** The repo this event comes from. */ 35 + /** The repo this event comes from. Note that all other message types name this field 'did'. */ 39 36 repo: string; 40 37 /** Repo commit object CID. */ 41 38 commit: CID; 42 - /** DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability. */ 43 - prev?: CID | null; 44 39 /** 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. */ 45 40 rev: string; 46 41 /** The rev of the last emitted commit from this repo (if any). */ 47 42 since: string | null; 48 - /** CAR file containing relevant blocks, as a diff since the previous repo state. */ 43 + /** 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. */ 49 44 blocks: Uint8Array; 50 45 ops: (RepoOp)[]; 51 46 blobs: (CID)[]; 47 + /** 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. */ 48 + prevData?: CID; 52 49 /** Timestamp of when this message was originally broadcast. */ 53 50 time: string; 54 51 } ··· 63 60 return validate<Commit & V>(v, id, hashCommit); 64 61 } 65 62 63 + /** 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. */ 64 + export interface Sync { 65 + $type?: "com.atproto.sync.subscribeRepos#sync"; 66 + /** The stream sequence number of this message. */ 67 + seq: number; 68 + /** The account this repo event corresponds to. Must match that in the commit object. */ 69 + did: string; 70 + /** CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'. */ 71 + blocks: Uint8Array; 72 + /** The rev of the commit. This value must match that in the commit object. */ 73 + rev: string; 74 + /** Timestamp of when this message was originally broadcast. */ 75 + time: string; 76 + } 77 + 78 + const hashSync = "sync"; 79 + 80 + export function isSync<V>(v: V) { 81 + return is$typed(v, id, hashSync); 82 + } 83 + 84 + export function validateSync<V>(v: V) { 85 + return validate<Sync & V>(v, id, hashSync); 86 + } 87 + 66 88 /** Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache. */ 67 89 export interface Identity { 68 90 $type?: "com.atproto.sync.subscribeRepos#identity"; ··· 97 119 | "suspended" 98 120 | "deleted" 99 121 | "deactivated" 122 + | "desynchronized" 123 + | "throttled" 100 124 | (string & globalThis.Record<PropertyKey, never>); 101 125 } 102 126 ··· 110 134 return validate<Account & V>(v, id, hashAccount); 111 135 } 112 136 113 - /** DEPRECATED -- Use #identity event instead */ 114 - export interface Handle { 115 - $type?: "com.atproto.sync.subscribeRepos#handle"; 116 - seq: number; 117 - did: string; 118 - handle: string; 119 - time: string; 120 - } 121 - 122 - const hashHandle = "handle"; 123 - 124 - export function isHandle<V>(v: V) { 125 - return is$typed(v, id, hashHandle); 126 - } 127 - 128 - export function validateHandle<V>(v: V) { 129 - return validate<Handle & V>(v, id, hashHandle); 130 - } 131 - 132 - /** DEPRECATED -- Use #account event instead */ 133 - export interface Migrate { 134 - $type?: "com.atproto.sync.subscribeRepos#migrate"; 135 - seq: number; 136 - did: string; 137 - migrateTo: string | null; 138 - time: string; 139 - } 140 - 141 - const hashMigrate = "migrate"; 142 - 143 - export function isMigrate<V>(v: V) { 144 - return is$typed(v, id, hashMigrate); 145 - } 146 - 147 - export function validateMigrate<V>(v: V) { 148 - return validate<Migrate & V>(v, id, hashMigrate); 149 - } 150 - 151 - /** DEPRECATED -- Use #account event instead */ 152 - export interface Tombstone { 153 - $type?: "com.atproto.sync.subscribeRepos#tombstone"; 154 - seq: number; 155 - did: string; 156 - time: string; 157 - } 158 - 159 - const hashTombstone = "tombstone"; 160 - 161 - export function isTombstone<V>(v: V) { 162 - return is$typed(v, id, hashTombstone); 163 - } 164 - 165 - export function validateTombstone<V>(v: V) { 166 - return validate<Tombstone & V>(v, id, hashTombstone); 167 - } 168 - 169 137 export interface Info { 170 138 $type?: "com.atproto.sync.subscribeRepos#info"; 171 139 name: "OutdatedCursor" | (string & globalThis.Record<PropertyKey, never>); ··· 193 161 path: string; 194 162 /** For creates and updates, the new record CID. For deletions, null. */ 195 163 cid: CID | null; 164 + /** For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined. */ 165 + prev?: CID; 196 166 } 197 167 198 168 const hashRepoOp = "repoOp";
+91
lex/types/com/atproto/temp/checkHandleAvailability.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "com.atproto.temp.checkHandleAvailability"; 9 + 10 + export type QueryParams = { 11 + /** Tentative handle. Will be checked for availability or used to build handle suggestions. */ 12 + handle: string; 13 + /** User-provided email. Might be used to build handle suggestions. */ 14 + email?: string; 15 + /** User-provided birth date. Might be used to build handle suggestions. */ 16 + birthDate?: string; 17 + }; 18 + export type InputSchema = undefined; 19 + 20 + export interface OutputSchema { 21 + /** Echo of the input handle. */ 22 + handle: string; 23 + result: $Typed<ResultAvailable> | $Typed<ResultUnavailable> | { 24 + $type: string; 25 + }; 26 + } 27 + 28 + export type HandlerInput = void; 29 + 30 + export interface HandlerSuccess { 31 + encoding: "application/json"; 32 + body: OutputSchema; 33 + headers?: { [key: string]: string }; 34 + } 35 + 36 + export interface HandlerError { 37 + status: number; 38 + message?: string; 39 + error?: "InvalidEmail"; 40 + } 41 + 42 + export type HandlerOutput = HandlerError | HandlerSuccess; 43 + 44 + /** Indicates the provided handle is available. */ 45 + export interface ResultAvailable { 46 + $type?: "com.atproto.temp.checkHandleAvailability#resultAvailable"; 47 + } 48 + 49 + const hashResultAvailable = "resultAvailable"; 50 + 51 + export function isResultAvailable<V>(v: V) { 52 + return is$typed(v, id, hashResultAvailable); 53 + } 54 + 55 + export function validateResultAvailable<V>(v: V) { 56 + return validate<ResultAvailable & V>(v, id, hashResultAvailable); 57 + } 58 + 59 + /** Indicates the provided handle is unavailable and gives suggestions of available handles. */ 60 + export interface ResultUnavailable { 61 + $type?: "com.atproto.temp.checkHandleAvailability#resultUnavailable"; 62 + /** List of suggested handles based on the provided inputs. */ 63 + suggestions: (Suggestion)[]; 64 + } 65 + 66 + const hashResultUnavailable = "resultUnavailable"; 67 + 68 + export function isResultUnavailable<V>(v: V) { 69 + return is$typed(v, id, hashResultUnavailable); 70 + } 71 + 72 + export function validateResultUnavailable<V>(v: V) { 73 + return validate<ResultUnavailable & V>(v, id, hashResultUnavailable); 74 + } 75 + 76 + export interface Suggestion { 77 + $type?: "com.atproto.temp.checkHandleAvailability#suggestion"; 78 + handle: string; 79 + /** Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics. */ 80 + method: string; 81 + } 82 + 83 + const hashSuggestion = "suggestion"; 84 + 85 + export function isSuggestion<V>(v: V) { 86 + return is$typed(v, id, hashSuggestion); 87 + } 88 + 89 + export function validateSuggestion<V>(v: V) { 90 + return validate<Suggestion & V>(v, id, hashSuggestion); 91 + }
+29
lex/types/com/atproto/temp/dereferenceScope.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = { 5 + /** The scope reference (starts with 'ref:') */ 6 + scope: string; 7 + }; 8 + export type InputSchema = undefined; 9 + 10 + export interface OutputSchema { 11 + /** The full oauth permission scope */ 12 + scope: string; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + error?: "InvalidScopeReference"; 27 + } 28 + 29 + export type HandlerOutput = HandlerError | HandlerSuccess;
+20
lex/types/com/atproto/temp/revokeAccountCredentials.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export type QueryParams = globalThis.Record<PropertyKey, never>; 5 + 6 + export interface InputSchema { 7 + account: string; 8 + } 9 + 10 + export interface HandlerInput { 11 + encoding: "application/json"; 12 + body: InputSchema; 13 + } 14 + 15 + export interface HandlerError { 16 + status: number; 17 + message?: string; 18 + } 19 + 20 + export type HandlerOutput = HandlerError | void;
+1 -20
lex/types/so/sprk/actor/defs.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 8 7 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 9 8 import type * as SoSprkFeedThreadgate from "../feed/threadgate.ts"; ··· 165 164 } 166 165 167 166 export type Preferences = ( 168 - | $Typed<AdultContentPref> 169 167 | $Typed<ContentLabelPref> 170 168 | $Typed<SavedFeedsPref> 171 169 | $Typed<PersonalDetailsPref> ··· 178 176 | $Typed<PostInteractionSettingsPref> 179 177 | { $type: string } 180 178 )[]; 181 - 182 - export interface AdultContentPref { 183 - $type?: "so.sprk.actor.defs#adultContentPref"; 184 - enabled: boolean; 185 - } 186 - 187 - const hashAdultContentPref = "adultContentPref"; 188 - 189 - export function isAdultContentPref<V>(v: V) { 190 - return is$typed(v, id, hashAdultContentPref); 191 - } 192 - 193 - export function validateAdultContentPref<V>(v: V) { 194 - return validate<AdultContentPref & V>(v, id, hashAdultContentPref); 195 - } 196 179 197 180 export interface ContentLabelPref { 198 181 $type?: "so.sprk.actor.defs#contentLabelPref"; ··· 305 288 | "random" 306 289 | "hotness" 307 290 | (string & globalThis.Record<PropertyKey, never>); 308 - /** Show followed users at the top of all replies. */ 309 - prioritizeFollowedUsers?: boolean; 310 291 } 311 292 312 293 const hashThreadViewPref = "threadViewPref";
+4 -3
lex/types/so/sprk/actor/profile.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 - import { is$typed as _is$typed } from "../../../../util.ts"; 7 - import { type $Typed } from "../../../../util.ts"; 6 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 8 7 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 9 8 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 10 9 ··· 36 35 export function validateRecord<V>(v: V) { 37 36 return validate<Record & V>(v, id, hashRecord, true); 38 37 } 38 + 39 + export type Main = Record;
+1 -2
lex/types/so/sprk/feed/defs.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as SoSprkActorDefs from "../actor/defs.ts"; 8 7 import type * as SoSprkMediaImages from "../media/images.ts"; 9 8 import type * as SoSprkMediaVideo from "../media/video.ts";
+4 -3
lex/types/so/sprk/feed/generator.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 - import { is$typed as _is$typed } from "../../../../util.ts"; 7 - import { type $Typed } from "../../../../util.ts"; 6 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 8 7 import type * as SoSprkRichtextFacet from "../richtext/facet.ts"; 9 8 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 10 9 ··· 34 33 export function validateRecord<V>(v: V) { 35 34 return validate<Record & V>(v, id, hashRecord, true); 36 35 } 36 + 37 + export type Main = Record;
+1 -4
lex/types/so/sprk/feed/getPostThread.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as SoSprkFeedDefs from "./defs.ts"; 8 7 9 8 const is$typed = _is$typed, validate = _validate; ··· 18 17 depth: number; 19 18 /** How many levels of parent (and grandparent, etc) post to include. */ 20 19 parentHeight: number; 21 - /** Whether to prioritize posts from followed users. It only has effect when the user is authenticated. */ 22 - prioritizeFollowedUsers: boolean; 23 20 /** Sorting for the thread replies. */ 24 21 sort: 25 22 | "newest"
+2
lex/types/so/sprk/feed/like.ts
··· 25 25 export function validateRecord<V>(v: V) { 26 26 return validate<Record & V>(v, id, hashRecord, true); 27 27 } 28 + 29 + export type Main = Record;
+3 -2
lex/types/so/sprk/feed/post.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as SoSprkMediaImages from "../media/images.ts"; 8 7 import type * as SoSprkMediaVideo from "../media/video.ts"; 9 8 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; ··· 39 38 export function validateRecord<V>(v: V) { 40 39 return validate<Record & V>(v, id, hashRecord, true); 41 40 } 41 + 42 + export type Main = Record; 42 43 43 44 export interface CaptionRef { 44 45 $type?: "so.sprk.feed.post#captionRef";
+3 -2
lex/types/so/sprk/feed/postgate.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 8 7 const is$typed = _is$typed, validate = _validate; 9 8 const id = "so.sprk.feed.postgate"; ··· 29 28 export function validateRecord<V>(v: V) { 30 29 return validate<Record & V>(v, id, hashRecord, true); 31 30 } 31 + 32 + export type Main = Record; 32 33 33 34 /** Disables embedding of this post. */ 34 35 export interface DisableRule {
+3 -2
lex/types/so/sprk/feed/reply.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as SoSprkRichtextFacet from "../richtext/facet.ts"; 8 7 import type * as SoSprkMediaImage from "../media/image.ts"; 9 8 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; ··· 37 36 export function validateRecord<V>(v: V) { 38 37 return validate<Record & V>(v, id, hashRecord, true); 39 38 } 39 + 40 + export type Main = Record; 40 41 41 42 export interface ReplyRef { 42 43 $type?: "so.sprk.feed.reply#replyRef";
+2
lex/types/so/sprk/feed/repost.ts
··· 25 25 export function validateRecord<V>(v: V) { 26 26 return validate<Record & V>(v, id, hashRecord, true); 27 27 } 28 + 29 + export type Main = Record;
+3 -2
lex/types/so/sprk/feed/threadgate.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 8 7 const is$typed = _is$typed, validate = _validate; 9 8 const id = "so.sprk.feed.threadgate"; ··· 32 31 export function validateRecord<V>(v: V) { 33 32 return validate<Record & V>(v, id, hashRecord, true); 34 33 } 34 + 35 + export type Main = Record; 35 36 36 37 /** Allow replies from actors mentioned in your post. */ 37 38 export interface MentionRule {
+2
lex/types/so/sprk/graph/block.ts
··· 24 24 export function validateRecord<V>(v: V) { 25 25 return validate<Record & V>(v, id, hashRecord, true); 26 26 } 27 + 28 + export type Main = Record;
+2
lex/types/so/sprk/graph/follow.ts
··· 23 23 export function validateRecord<V>(v: V) { 24 24 return validate<Record & V>(v, id, hashRecord, true); 25 25 } 26 + 27 + export type Main = Record;
+1 -1
lex/types/so/sprk/graph/getRelationships.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as SoSprkGraphDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+7 -3
lex/types/so/sprk/labeler/defs.ts
··· 5 5 import { is$typed as _is$typed } from "../../../../util.ts"; 6 6 import type * as SoSprkActorDefs from "../actor/defs.ts"; 7 7 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 8 + import type * as ComAtprotoModerationDefs from "../../../com/atproto/moderation/defs.ts"; 8 9 9 10 const is$typed = _is$typed, validate = _validate; 10 11 const id = "so.sprk.labeler.defs"; ··· 15 16 cid: string; 16 17 creator: SoSprkActorDefs.ProfileView; 17 18 likeCount?: number; 18 - lookCount?: number; 19 19 viewer?: LabelerViewerState; 20 20 indexedAt: string; 21 21 labels?: (ComAtprotoLabelDefs.Label)[]; ··· 38 38 creator: SoSprkActorDefs.ProfileView; 39 39 policies: LabelerPolicies; 40 40 likeCount?: number; 41 - lookCount?: number; 42 41 viewer?: LabelerViewerState; 43 42 indexedAt: string; 44 43 labels?: (ComAtprotoLabelDefs.Label)[]; 44 + /** 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. */ 45 + reasonTypes?: (ComAtprotoModerationDefs.ReasonType)[]; 46 + /** The set of subject types (account, record, etc) this service accepts reports on. */ 47 + subjectTypes?: (ComAtprotoModerationDefs.SubjectType)[]; 48 + /** 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. */ 49 + subjectCollections?: (string)[]; 45 50 } 46 51 47 52 const hashLabelerViewDetailed = "labelerViewDetailed"; ··· 57 62 export interface LabelerViewerState { 58 63 $type?: "so.sprk.labeler.defs#labelerViewerState"; 59 64 like?: string; 60 - look?: string; 61 65 } 62 66 63 67 const hashLabelerViewerState = "labelerViewerState";
+1 -1
lex/types/so/sprk/labeler/getServices.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as SoSprkLabelerDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+10 -2
lex/types/so/sprk/labeler/service.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as SoSprkLabelerDefs from "./defs.ts"; 8 7 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 8 + import type * as ComAtprotoModerationDefs from "../../../com/atproto/moderation/defs.ts"; 9 9 10 10 const is$typed = _is$typed, validate = _validate; 11 11 const id = "so.sprk.labeler.service"; ··· 15 15 policies: SoSprkLabelerDefs.LabelerPolicies; 16 16 labels?: $Typed<ComAtprotoLabelDefs.SelfLabels> | { $type: string }; 17 17 createdAt: string; 18 + /** 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. */ 19 + reasonTypes?: (ComAtprotoModerationDefs.ReasonType)[]; 20 + /** The set of subject types (account, record, etc) this service accepts reports on. */ 21 + subjectTypes?: (ComAtprotoModerationDefs.SubjectType)[]; 22 + /** 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. */ 23 + subjectCollections?: (string)[]; 18 24 [k: string]: unknown; 19 25 } 20 26 ··· 27 33 export function validateRecord<V>(v: V) { 28 34 return validate<Record & V>(v, id, hashRecord, true); 29 35 } 36 + 37 + export type Main = Record;
+1 -1
lex/types/so/sprk/media/image.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 6 import { is$typed as _is$typed } from "../../../../util.ts"; 7 7 import type * as SoSprkMediaDefs from "./defs.ts";
+1 -1
lex/types/so/sprk/media/video.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 6 import { is$typed as _is$typed } from "../../../../util.ts"; 7 7 import type * as SoSprkMediaDefs from "./defs.ts";
+1 -2
lex/types/so/sprk/richtext/facet.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 8 7 const is$typed = _is$typed, validate = _validate; 9 8 const id = "so.sprk.richtext.facet";
+4 -3
lex/types/so/sprk/sound/audio.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 - import { is$typed as _is$typed } from "../../../../util.ts"; 7 - import { type $Typed } from "../../../../util.ts"; 6 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 8 7 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 9 8 import type * as SoSprkSoundDefs from "./defs.ts"; 10 9 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; ··· 34 33 export function validateRecord<V>(v: V) { 35 34 return validate<Record & V>(v, id, hashRecord, true); 36 35 } 36 + 37 + export type Main = Record;
+1
lex/types/so/sprk/sound/defs.ts
··· 20 20 coverArt: string; 21 21 details?: AudioDetails; 22 22 indexedAt: string; 23 + audio?: string; 23 24 labels?: (ComAtprotoLabelDefs.Label)[]; 24 25 } 25 26
+1 -2
lex/types/so/sprk/story/defs.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as SoSprkActorDefs from "../actor/defs.ts"; 8 7 import type * as SoSprkMediaImage from "../media/image.ts"; 9 8 import type * as SoSprkMediaVideo from "../media/video.ts";
+3 -2
lex/types/so/sprk/story/post.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as SoSprkMediaImage from "../media/image.ts"; 8 7 import type * as SoSprkMediaVideo from "../media/video.ts"; 9 8 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; ··· 33 32 export function validateRecord<V>(v: V) { 34 33 return validate<Record & V>(v, id, hashRecord, true); 35 34 } 35 + 36 + export type Main = Record;
+1 -1
lex/types/so/sprk/video/defs.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { BlobRef } from "@atp/lexicon"; 4 + import type { BlobRef } from "@atp/lexicon"; 5 5 import { validate as _validate } from "../../../../lexicons.ts"; 6 6 import { is$typed as _is$typed } from "../../../../util.ts"; 7 7 import type * as SoSprkSoundDefs from "../sound/defs.ts";
+1 -2
lex/types/so/sprk/video/uploadVideo.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import stream from "node:stream"; 5 4 import type * as SoSprkVideoDefs from "./defs.ts"; 6 5 7 6 export type QueryParams = globalThis.Record<PropertyKey, never>; ··· 13 12 14 13 export interface HandlerInput { 15 14 encoding: "video/mp4"; 16 - body: stream.Readable; 15 + body: ReadableStream; 17 16 } 18 17 19 18 export interface HandlerSuccess {
+140
lex/types/tools/ozone/hosting/getAccountHistory.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "tools.ozone.hosting.getAccountHistory"; 9 + 10 + export type QueryParams = { 11 + did: string; 12 + events?: 13 + | "accountCreated" 14 + | "emailUpdated" 15 + | "emailConfirmed" 16 + | "passwordUpdated" 17 + | "handleUpdated" 18 + | (string & globalThis.Record<PropertyKey, never>)[]; 19 + cursor?: string; 20 + limit: number; 21 + }; 22 + export type InputSchema = undefined; 23 + 24 + export interface OutputSchema { 25 + cursor?: string; 26 + events: (Event)[]; 27 + } 28 + 29 + export type HandlerInput = void; 30 + 31 + export interface HandlerSuccess { 32 + encoding: "application/json"; 33 + body: OutputSchema; 34 + headers?: { [key: string]: string }; 35 + } 36 + 37 + export interface HandlerError { 38 + status: number; 39 + message?: string; 40 + } 41 + 42 + export type HandlerOutput = HandlerError | HandlerSuccess; 43 + 44 + export interface Event { 45 + $type?: "tools.ozone.hosting.getAccountHistory#event"; 46 + details: 47 + | $Typed<AccountCreated> 48 + | $Typed<EmailUpdated> 49 + | $Typed<EmailConfirmed> 50 + | $Typed<PasswordUpdated> 51 + | $Typed<HandleUpdated> 52 + | { $type: string }; 53 + createdBy: string; 54 + createdAt: string; 55 + } 56 + 57 + const hashEvent = "event"; 58 + 59 + export function isEvent<V>(v: V) { 60 + return is$typed(v, id, hashEvent); 61 + } 62 + 63 + export function validateEvent<V>(v: V) { 64 + return validate<Event & V>(v, id, hashEvent); 65 + } 66 + 67 + export interface AccountCreated { 68 + $type?: "tools.ozone.hosting.getAccountHistory#accountCreated"; 69 + email?: string; 70 + handle?: string; 71 + } 72 + 73 + const hashAccountCreated = "accountCreated"; 74 + 75 + export function isAccountCreated<V>(v: V) { 76 + return is$typed(v, id, hashAccountCreated); 77 + } 78 + 79 + export function validateAccountCreated<V>(v: V) { 80 + return validate<AccountCreated & V>(v, id, hashAccountCreated); 81 + } 82 + 83 + export interface EmailUpdated { 84 + $type?: "tools.ozone.hosting.getAccountHistory#emailUpdated"; 85 + email: string; 86 + } 87 + 88 + const hashEmailUpdated = "emailUpdated"; 89 + 90 + export function isEmailUpdated<V>(v: V) { 91 + return is$typed(v, id, hashEmailUpdated); 92 + } 93 + 94 + export function validateEmailUpdated<V>(v: V) { 95 + return validate<EmailUpdated & V>(v, id, hashEmailUpdated); 96 + } 97 + 98 + export interface EmailConfirmed { 99 + $type?: "tools.ozone.hosting.getAccountHistory#emailConfirmed"; 100 + email: string; 101 + } 102 + 103 + const hashEmailConfirmed = "emailConfirmed"; 104 + 105 + export function isEmailConfirmed<V>(v: V) { 106 + return is$typed(v, id, hashEmailConfirmed); 107 + } 108 + 109 + export function validateEmailConfirmed<V>(v: V) { 110 + return validate<EmailConfirmed & V>(v, id, hashEmailConfirmed); 111 + } 112 + 113 + export interface PasswordUpdated { 114 + $type?: "tools.ozone.hosting.getAccountHistory#passwordUpdated"; 115 + } 116 + 117 + const hashPasswordUpdated = "passwordUpdated"; 118 + 119 + export function isPasswordUpdated<V>(v: V) { 120 + return is$typed(v, id, hashPasswordUpdated); 121 + } 122 + 123 + export function validatePasswordUpdated<V>(v: V) { 124 + return validate<PasswordUpdated & V>(v, id, hashPasswordUpdated); 125 + } 126 + 127 + export interface HandleUpdated { 128 + $type?: "tools.ozone.hosting.getAccountHistory#handleUpdated"; 129 + handle: string; 130 + } 131 + 132 + const hashHandleUpdated = "handleUpdated"; 133 + 134 + export function isHandleUpdated<V>(v: V) { 135 + return is$typed(v, id, hashHandleUpdated); 136 + } 137 + 138 + export function validateHandleUpdated<V>(v: V) { 139 + return validate<HandleUpdated & V>(v, id, hashHandleUpdated); 140 + }
+72
lex/types/tools/ozone/moderation/cancelScheduledActions.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "tools.ozone.moderation.cancelScheduledActions"; 9 + 10 + export type QueryParams = globalThis.Record<PropertyKey, never>; 11 + 12 + export interface InputSchema { 13 + /** Array of DID subjects to cancel scheduled actions for */ 14 + subjects: (string)[]; 15 + /** Optional comment describing the reason for cancellation */ 16 + comment?: string; 17 + } 18 + 19 + export type OutputSchema = CancellationResults; 20 + 21 + export interface HandlerInput { 22 + encoding: "application/json"; 23 + body: InputSchema; 24 + } 25 + 26 + export interface HandlerSuccess { 27 + encoding: "application/json"; 28 + body: OutputSchema; 29 + headers?: { [key: string]: string }; 30 + } 31 + 32 + export interface HandlerError { 33 + status: number; 34 + message?: string; 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess; 38 + 39 + export interface CancellationResults { 40 + $type?: "tools.ozone.moderation.cancelScheduledActions#cancellationResults"; 41 + /** DIDs for which all pending scheduled actions were successfully cancelled */ 42 + succeeded: (string)[]; 43 + /** DIDs for which cancellation failed with error details */ 44 + failed: (FailedCancellation)[]; 45 + } 46 + 47 + const hashCancellationResults = "cancellationResults"; 48 + 49 + export function isCancellationResults<V>(v: V) { 50 + return is$typed(v, id, hashCancellationResults); 51 + } 52 + 53 + export function validateCancellationResults<V>(v: V) { 54 + return validate<CancellationResults & V>(v, id, hashCancellationResults); 55 + } 56 + 57 + export interface FailedCancellation { 58 + $type?: "tools.ozone.moderation.cancelScheduledActions#failedCancellation"; 59 + did: string; 60 + error: string; 61 + errorCode?: string; 62 + } 63 + 64 + const hashFailedCancellation = "failedCancellation"; 65 + 66 + export function isFailedCancellation<V>(v: V) { 67 + return is$typed(v, id, hashFailedCancellation); 68 + } 69 + 70 + export function validateFailedCancellation<V>(v: V) { 71 + return validate<FailedCancellation & V>(v, id, hashFailedCancellation); 72 + }
+304 -6
lex/types/tools/ozone/moderation/defs.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 import { validate as _validate } from "../../../../lexicons.ts"; 5 - import { is$typed as _is$typed } from "../../../../util.ts"; 6 - import { type $Typed } from "../../../../util.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 7 6 import type * as ComAtprotoAdminDefs from "../../../com/atproto/admin/defs.ts"; 8 7 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; 9 8 import type * as ChatBskyConvoDefs from "../../../chat/bsky/convo/defs.ts"; 10 9 import type * as ComAtprotoModerationDefs from "../../../com/atproto/moderation/defs.ts"; 10 + import type * as AppBskyAgeassuranceDefs from "../../../app/bsky/ageassurance/defs.ts"; 11 11 import type * as ComAtprotoServerDefs from "../../../com/atproto/server/defs.ts"; 12 12 import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; 13 13 ··· 37 37 | $Typed<IdentityEvent> 38 38 | $Typed<RecordEvent> 39 39 | $Typed<ModEventPriorityScore> 40 + | $Typed<AgeAssuranceEvent> 41 + | $Typed<AgeAssuranceOverrideEvent> 42 + | $Typed<RevokeAccountCredentialsEvent> 43 + | $Typed<ScheduleTakedownEvent> 44 + | $Typed<CancelScheduledTakedownEvent> 40 45 | { $type: string }; 41 46 subject: 42 47 | $Typed<ComAtprotoAdminDefs.RepoRef> ··· 48 53 createdAt: string; 49 54 creatorHandle?: string; 50 55 subjectHandle?: string; 56 + modTool?: ModTool; 51 57 } 52 58 53 59 const hashModEventView = "modEventView"; ··· 83 89 | $Typed<IdentityEvent> 84 90 | $Typed<RecordEvent> 85 91 | $Typed<ModEventPriorityScore> 92 + | $Typed<AgeAssuranceEvent> 93 + | $Typed<AgeAssuranceOverrideEvent> 94 + | $Typed<RevokeAccountCredentialsEvent> 95 + | $Typed<ScheduleTakedownEvent> 96 + | $Typed<CancelScheduledTakedownEvent> 86 97 | { $type: string }; 87 98 subject: 88 99 | $Typed<RepoView> ··· 93 104 subjectBlobs: (BlobView)[]; 94 105 createdBy: string; 95 106 createdAt: string; 107 + modTool?: ModTool; 96 108 } 97 109 98 110 const hashModEventViewDetail = "modEventViewDetail"; ··· 111 123 subject: 112 124 | $Typed<ComAtprotoAdminDefs.RepoRef> 113 125 | $Typed<ComAtprotoRepoStrongRef.Main> 126 + | $Typed<ChatBskyConvoDefs.MessageRef> 114 127 | { $type: string }; 115 128 hosting?: $Typed<AccountHosting> | $Typed<RecordHosting> | { $type: string }; 116 129 subjectBlobCids?: (string)[]; ··· 138 151 tags?: (string)[]; 139 152 accountStats?: AccountStats; 140 153 recordsStats?: RecordsStats; 154 + accountStrike?: AccountStrike; 155 + /** Current age assurance state of the subject. */ 156 + ageAssuranceState?: 157 + | "pending" 158 + | "assured" 159 + | "unknown" 160 + | "reset" 161 + | "blocked" 162 + | (string & globalThis.Record<PropertyKey, never>); 163 + /** Whether or not the last successful update to age assurance was made by the user or admin. */ 164 + ageAssuranceUpdatedBy?: 165 + | "admin" 166 + | "user" 167 + | (string & globalThis.Record<PropertyKey, never>); 141 168 } 142 169 143 170 const hashSubjectStatusView = "subjectStatusView"; ··· 150 177 return validate<SubjectStatusView & V>(v, id, hashSubjectStatusView); 151 178 } 152 179 180 + /** Detailed view of a subject. For record subjects, the author's repo and profile will be returned. */ 181 + export interface SubjectView { 182 + $type?: "tools.ozone.moderation.defs#subjectView"; 183 + type: ComAtprotoModerationDefs.SubjectType; 184 + subject: string; 185 + status?: SubjectStatusView; 186 + repo?: RepoViewDetail; 187 + profile?: { $type: string }; 188 + record?: RecordViewDetail; 189 + } 190 + 191 + const hashSubjectView = "subjectView"; 192 + 193 + export function isSubjectView<V>(v: V) { 194 + return is$typed(v, id, hashSubjectView); 195 + } 196 + 197 + export function validateSubjectView<V>(v: V) { 198 + return validate<SubjectView & V>(v, id, hashSubjectView); 199 + } 200 + 153 201 /** Statistics about a particular account subject */ 154 202 export interface AccountStats { 155 203 $type?: "tools.ozone.moderation.defs#accountStats"; ··· 206 254 return validate<RecordsStats & V>(v, id, hashRecordsStats); 207 255 } 208 256 257 + /** Strike information for an account */ 258 + export interface AccountStrike { 259 + $type?: "tools.ozone.moderation.defs#accountStrike"; 260 + /** Current number of active strikes (excluding expired strikes) */ 261 + activeStrikeCount?: number; 262 + /** Total number of strikes ever received (including expired strikes) */ 263 + totalStrikeCount?: number; 264 + /** Timestamp of the first strike received */ 265 + firstStrikeAt?: string; 266 + /** Timestamp of the most recent strike received */ 267 + lastStrikeAt?: string; 268 + } 269 + 270 + const hashAccountStrike = "accountStrike"; 271 + 272 + export function isAccountStrike<V>(v: V) { 273 + return is$typed(v, id, hashAccountStrike); 274 + } 275 + 276 + export function validateAccountStrike<V>(v: V) { 277 + return validate<AccountStrike & V>(v, id, hashAccountStrike); 278 + } 279 + 209 280 export type SubjectReviewState = 210 - | "lex:tools.ozone.moderation.defs#reviewOpen" 211 - | "lex:tools.ozone.moderation.defs#reviewEscalated" 212 - | "lex:tools.ozone.moderation.defs#reviewClosed" 213 - | "lex:tools.ozone.moderation.defs#reviewNone" 281 + | "tools.ozone.moderation.defs#reviewOpen" 282 + | "tools.ozone.moderation.defs#reviewEscalated" 283 + | "tools.ozone.moderation.defs#reviewClosed" 284 + | "tools.ozone.moderation.defs#reviewNone" 214 285 | (string & globalThis.Record<PropertyKey, never>); 215 286 216 287 /** Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator */ ··· 232 303 acknowledgeAccountSubjects?: boolean; 233 304 /** Names/Keywords of the policies that drove the decision. */ 234 305 policies?: (string)[]; 306 + /** Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.). */ 307 + severityLevel?: string; 308 + /** List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services. */ 309 + targetServices?: 310 + ("appview" | "pds" | (string & globalThis.Record<PropertyKey, never>))[]; 311 + /** Number of strikes to assign to the user for this violation. */ 312 + strikeCount?: number; 313 + /** When the strike should expire. If not provided, the strike never expires. */ 314 + strikeExpiresAt?: string; 235 315 } 236 316 237 317 const hashModEventTakedown = "modEventTakedown"; ··· 249 329 $type?: "tools.ozone.moderation.defs#modEventReverseTakedown"; 250 330 /** Describe reasoning behind the reversal. */ 251 331 comment?: string; 332 + /** Names/Keywords of the policy infraction for which takedown is being reversed. */ 333 + policies?: (string)[]; 334 + /** Severity level of the violation. Usually set from the last policy infraction's severity. */ 335 + severityLevel?: string; 336 + /** Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity. */ 337 + strikeCount?: number; 252 338 } 253 339 254 340 const hashModEventReverseTakedown = "modEventReverseTakedown"; ··· 356 442 return validate<ModEventPriorityScore & V>(v, id, hashModEventPriorityScore); 357 443 } 358 444 445 + /** Age assurance info coming directly from users. Only works on DID subjects. */ 446 + export interface AgeAssuranceEvent { 447 + $type?: "tools.ozone.moderation.defs#ageAssuranceEvent"; 448 + /** The date and time of this write operation. */ 449 + createdAt: string; 450 + /** The unique identifier for this instance of the age assurance flow, in UUID format. */ 451 + attemptId: string; 452 + /** The status of the Age Assurance process. */ 453 + status: 454 + | "unknown" 455 + | "pending" 456 + | "assured" 457 + | (string & globalThis.Record<PropertyKey, never>); 458 + access?: AppBskyAgeassuranceDefs.Access; 459 + /** The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow. */ 460 + countryCode?: string; 461 + /** The ISO 3166-2 region code provided when beginning the Age Assurance flow. */ 462 + regionCode?: string; 463 + /** The IP address used when initiating the AA flow. */ 464 + initIp?: string; 465 + /** The user agent used when initiating the AA flow. */ 466 + initUa?: string; 467 + /** The IP address used when completing the AA flow. */ 468 + completeIp?: string; 469 + /** The user agent used when completing the AA flow. */ 470 + completeUa?: string; 471 + } 472 + 473 + const hashAgeAssuranceEvent = "ageAssuranceEvent"; 474 + 475 + export function isAgeAssuranceEvent<V>(v: V) { 476 + return is$typed(v, id, hashAgeAssuranceEvent); 477 + } 478 + 479 + export function validateAgeAssuranceEvent<V>(v: V) { 480 + return validate<AgeAssuranceEvent & V>(v, id, hashAgeAssuranceEvent); 481 + } 482 + 483 + /** Age assurance status override by moderators. Only works on DID subjects. */ 484 + export interface AgeAssuranceOverrideEvent { 485 + $type?: "tools.ozone.moderation.defs#ageAssuranceOverrideEvent"; 486 + /** The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state. */ 487 + status: 488 + | "assured" 489 + | "reset" 490 + | "blocked" 491 + | (string & globalThis.Record<PropertyKey, never>); 492 + access?: AppBskyAgeassuranceDefs.Access; 493 + /** Comment describing the reason for the override. */ 494 + comment: string; 495 + } 496 + 497 + const hashAgeAssuranceOverrideEvent = "ageAssuranceOverrideEvent"; 498 + 499 + export function isAgeAssuranceOverrideEvent<V>(v: V) { 500 + return is$typed(v, id, hashAgeAssuranceOverrideEvent); 501 + } 502 + 503 + export function validateAgeAssuranceOverrideEvent<V>(v: V) { 504 + return validate<AgeAssuranceOverrideEvent & V>( 505 + v, 506 + id, 507 + hashAgeAssuranceOverrideEvent, 508 + ); 509 + } 510 + 511 + /** Account credentials revocation by moderators. Only works on DID subjects. */ 512 + export interface RevokeAccountCredentialsEvent { 513 + $type?: "tools.ozone.moderation.defs#revokeAccountCredentialsEvent"; 514 + /** Comment describing the reason for the revocation. */ 515 + comment: string; 516 + } 517 + 518 + const hashRevokeAccountCredentialsEvent = "revokeAccountCredentialsEvent"; 519 + 520 + export function isRevokeAccountCredentialsEvent<V>(v: V) { 521 + return is$typed(v, id, hashRevokeAccountCredentialsEvent); 522 + } 523 + 524 + export function validateRevokeAccountCredentialsEvent<V>(v: V) { 525 + return validate<RevokeAccountCredentialsEvent & V>( 526 + v, 527 + id, 528 + hashRevokeAccountCredentialsEvent, 529 + ); 530 + } 531 + 359 532 export interface ModEventAcknowledge { 360 533 $type?: "tools.ozone.moderation.defs#modEventAcknowledge"; 361 534 comment?: string; ··· 471 644 content?: string; 472 645 /** Additional comment about the outgoing comm. */ 473 646 comment?: string; 647 + /** Names/Keywords of the policies that necessitated the email. */ 648 + policies?: (string)[]; 649 + /** Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense */ 650 + severityLevel?: string; 651 + /** Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense. */ 652 + strikeCount?: number; 653 + /** When the strike should expire. If not provided, the strike never expires. */ 654 + strikeExpiresAt?: string; 655 + /** Indicates whether the email was successfully delivered to the user's inbox. */ 656 + isDelivered?: boolean; 474 657 } 475 658 476 659 const hashModEventEmail = "modEventEmail"; ··· 590 773 return validate<RecordEvent & V>(v, id, hashRecordEvent); 591 774 } 592 775 776 + /** Logs a scheduled takedown action for an account. */ 777 + export interface ScheduleTakedownEvent { 778 + $type?: "tools.ozone.moderation.defs#scheduleTakedownEvent"; 779 + comment?: string; 780 + executeAt?: string; 781 + executeAfter?: string; 782 + executeUntil?: string; 783 + } 784 + 785 + const hashScheduleTakedownEvent = "scheduleTakedownEvent"; 786 + 787 + export function isScheduleTakedownEvent<V>(v: V) { 788 + return is$typed(v, id, hashScheduleTakedownEvent); 789 + } 790 + 791 + export function validateScheduleTakedownEvent<V>(v: V) { 792 + return validate<ScheduleTakedownEvent & V>(v, id, hashScheduleTakedownEvent); 793 + } 794 + 795 + /** Logs cancellation of a scheduled takedown action for an account. */ 796 + export interface CancelScheduledTakedownEvent { 797 + $type?: "tools.ozone.moderation.defs#cancelScheduledTakedownEvent"; 798 + comment?: string; 799 + } 800 + 801 + const hashCancelScheduledTakedownEvent = "cancelScheduledTakedownEvent"; 802 + 803 + export function isCancelScheduledTakedownEvent<V>(v: V) { 804 + return is$typed(v, id, hashCancelScheduledTakedownEvent); 805 + } 806 + 807 + export function validateCancelScheduledTakedownEvent<V>(v: V) { 808 + return validate<CancelScheduledTakedownEvent & V>( 809 + v, 810 + id, 811 + hashCancelScheduledTakedownEvent, 812 + ); 813 + } 814 + 593 815 export interface RepoView { 594 816 $type?: "tools.ozone.moderation.defs#repoView"; 595 817 did: string; ··· 876 1098 export function validateReporterStats<V>(v: V) { 877 1099 return validate<ReporterStats & V>(v, id, hashReporterStats); 878 1100 } 1101 + 1102 + /** Moderation tool information for tracing the source of the action */ 1103 + export interface ModTool { 1104 + $type?: "tools.ozone.moderation.defs#modTool"; 1105 + /** Name/identifier of the source (e.g., 'automod', 'ozone/workspace') */ 1106 + name: string; 1107 + /** Additional arbitrary metadata about the source */ 1108 + meta?: { [_ in string]: unknown }; 1109 + } 1110 + 1111 + const hashModTool = "modTool"; 1112 + 1113 + export function isModTool<V>(v: V) { 1114 + return is$typed(v, id, hashModTool); 1115 + } 1116 + 1117 + export function validateModTool<V>(v: V) { 1118 + return validate<ModTool & V>(v, id, hashModTool); 1119 + } 1120 + 1121 + /** Moderation event timeline event for a PLC create operation */ 1122 + export const TIMELINEEVENTPLCCREATE = `${id}#timelineEventPlcCreate`; 1123 + /** Moderation event timeline event for generic PLC operation */ 1124 + export const TIMELINEEVENTPLCOPERATION = `${id}#timelineEventPlcOperation`; 1125 + /** Moderation event timeline event for a PLC tombstone operation */ 1126 + export const TIMELINEEVENTPLCTOMBSTONE = `${id}#timelineEventPlcTombstone`; 1127 + 1128 + /** View of a scheduled moderation action */ 1129 + export interface ScheduledActionView { 1130 + $type?: "tools.ozone.moderation.defs#scheduledActionView"; 1131 + /** Auto-incrementing row ID */ 1132 + id: number; 1133 + /** Type of action to be executed */ 1134 + action: "takedown" | (string & globalThis.Record<PropertyKey, never>); 1135 + /** Serialized event object that will be propagated to the event when performed */ 1136 + eventData?: { [_ in string]: unknown }; 1137 + /** Subject DID for the action */ 1138 + did: string; 1139 + /** Exact time to execute the action */ 1140 + executeAt?: string; 1141 + /** Earliest time to execute the action (for randomized scheduling) */ 1142 + executeAfter?: string; 1143 + /** Latest time to execute the action (for randomized scheduling) */ 1144 + executeUntil?: string; 1145 + /** Whether execution time should be randomized within the specified range */ 1146 + randomizeExecution?: boolean; 1147 + /** DID of the user who created this scheduled action */ 1148 + createdBy: string; 1149 + /** When the scheduled action was created */ 1150 + createdAt: string; 1151 + /** When the scheduled action was last updated */ 1152 + updatedAt?: string; 1153 + /** Current status of the scheduled action */ 1154 + status: 1155 + | "pending" 1156 + | "executed" 1157 + | "cancelled" 1158 + | "failed" 1159 + | (string & globalThis.Record<PropertyKey, never>); 1160 + /** When the action was last attempted to be executed */ 1161 + lastExecutedAt?: string; 1162 + /** Reason for the last execution failure */ 1163 + lastFailureReason?: string; 1164 + /** ID of the moderation event created when action was successfully executed */ 1165 + executionEventId?: number; 1166 + } 1167 + 1168 + const hashScheduledActionView = "scheduledActionView"; 1169 + 1170 + export function isScheduledActionView<V>(v: V) { 1171 + return is$typed(v, id, hashScheduledActionView); 1172 + } 1173 + 1174 + export function validateScheduledActionView<V>(v: V) { 1175 + return validate<ScheduledActionView & V>(v, id, hashScheduledActionView); 1176 + }
+10 -2
lex/types/tools/ozone/moderation/emitEvent.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ToolsOzoneModerationDefs from "./defs.ts"; 6 6 import type * as ComAtprotoAdminDefs from "../../../com/atproto/admin/defs.ts"; 7 7 import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; ··· 29 29 | $Typed<ToolsOzoneModerationDefs.IdentityEvent> 30 30 | $Typed<ToolsOzoneModerationDefs.RecordEvent> 31 31 | $Typed<ToolsOzoneModerationDefs.ModEventPriorityScore> 32 + | $Typed<ToolsOzoneModerationDefs.AgeAssuranceEvent> 33 + | $Typed<ToolsOzoneModerationDefs.AgeAssuranceOverrideEvent> 34 + | $Typed<ToolsOzoneModerationDefs.RevokeAccountCredentialsEvent> 35 + | $Typed<ToolsOzoneModerationDefs.ScheduleTakedownEvent> 36 + | $Typed<ToolsOzoneModerationDefs.CancelScheduledTakedownEvent> 32 37 | { $type: string }; 33 38 subject: 34 39 | $Typed<ComAtprotoAdminDefs.RepoRef> ··· 36 41 | { $type: string }; 37 42 subjectBlobCids?: (string)[]; 38 43 createdBy: string; 44 + modTool?: ToolsOzoneModerationDefs.ModTool; 45 + /** An optional external ID for the event, used to deduplicate events from external systems. Fails when an event of same type with the same external ID exists for the same subject. */ 46 + externalId?: string; 39 47 } 40 48 41 49 export type OutputSchema = ToolsOzoneModerationDefs.ModEventView; ··· 54 62 export interface HandlerError { 55 63 status: number; 56 64 message?: string; 57 - error?: "SubjectHasAction"; 65 + error?: "SubjectHasAction" | "DuplicateExternalId"; 58 66 } 59 67 60 68 export type HandlerOutput = HandlerError | HandlerSuccess;
+102
lex/types/tools/ozone/moderation/getAccountTimeline.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "tools.ozone.moderation.getAccountTimeline"; 9 + 10 + export type QueryParams = { 11 + did: string; 12 + }; 13 + export type InputSchema = undefined; 14 + 15 + export interface OutputSchema { 16 + timeline: (TimelineItem)[]; 17 + } 18 + 19 + export type HandlerInput = void; 20 + 21 + export interface HandlerSuccess { 22 + encoding: "application/json"; 23 + body: OutputSchema; 24 + headers?: { [key: string]: string }; 25 + } 26 + 27 + export interface HandlerError { 28 + status: number; 29 + message?: string; 30 + error?: "RepoNotFound"; 31 + } 32 + 33 + export type HandlerOutput = HandlerError | HandlerSuccess; 34 + 35 + export interface TimelineItem { 36 + $type?: "tools.ozone.moderation.getAccountTimeline#timelineItem"; 37 + day: string; 38 + summary: (TimelineItemSummary)[]; 39 + } 40 + 41 + const hashTimelineItem = "timelineItem"; 42 + 43 + export function isTimelineItem<V>(v: V) { 44 + return is$typed(v, id, hashTimelineItem); 45 + } 46 + 47 + export function validateTimelineItem<V>(v: V) { 48 + return validate<TimelineItem & V>(v, id, hashTimelineItem); 49 + } 50 + 51 + export interface TimelineItemSummary { 52 + $type?: "tools.ozone.moderation.getAccountTimeline#timelineItemSummary"; 53 + eventSubjectType: 54 + | "account" 55 + | "record" 56 + | "chat" 57 + | (string & globalThis.Record<PropertyKey, never>); 58 + eventType: 59 + | "tools.ozone.moderation.defs#modEventTakedown" 60 + | "tools.ozone.moderation.defs#modEventReverseTakedown" 61 + | "tools.ozone.moderation.defs#modEventComment" 62 + | "tools.ozone.moderation.defs#modEventReport" 63 + | "tools.ozone.moderation.defs#modEventLabel" 64 + | "tools.ozone.moderation.defs#modEventAcknowledge" 65 + | "tools.ozone.moderation.defs#modEventEscalate" 66 + | "tools.ozone.moderation.defs#modEventMute" 67 + | "tools.ozone.moderation.defs#modEventUnmute" 68 + | "tools.ozone.moderation.defs#modEventMuteReporter" 69 + | "tools.ozone.moderation.defs#modEventUnmuteReporter" 70 + | "tools.ozone.moderation.defs#modEventEmail" 71 + | "tools.ozone.moderation.defs#modEventResolveAppeal" 72 + | "tools.ozone.moderation.defs#modEventDivert" 73 + | "tools.ozone.moderation.defs#modEventTag" 74 + | "tools.ozone.moderation.defs#accountEvent" 75 + | "tools.ozone.moderation.defs#identityEvent" 76 + | "tools.ozone.moderation.defs#recordEvent" 77 + | "tools.ozone.moderation.defs#modEventPriorityScore" 78 + | "tools.ozone.moderation.defs#revokeAccountCredentialsEvent" 79 + | "tools.ozone.moderation.defs#ageAssuranceEvent" 80 + | "tools.ozone.moderation.defs#ageAssuranceOverrideEvent" 81 + | "tools.ozone.moderation.defs#timelineEventPlcCreate" 82 + | "tools.ozone.moderation.defs#timelineEventPlcOperation" 83 + | "tools.ozone.moderation.defs#timelineEventPlcTombstone" 84 + | "tools.ozone.hosting.getAccountHistory#accountCreated" 85 + | "tools.ozone.hosting.getAccountHistory#emailConfirmed" 86 + | "tools.ozone.hosting.getAccountHistory#passwordUpdated" 87 + | "tools.ozone.hosting.getAccountHistory#handleUpdated" 88 + | "tools.ozone.moderation.defs#scheduleTakedownEvent" 89 + | "tools.ozone.moderation.defs#cancelScheduledTakedownEvent" 90 + | (string & globalThis.Record<PropertyKey, never>); 91 + count: number; 92 + } 93 + 94 + const hashTimelineItemSummary = "timelineItemSummary"; 95 + 96 + export function isTimelineItemSummary<V>(v: V) { 97 + return is$typed(v, id, hashTimelineItemSummary); 98 + } 99 + 100 + export function validateTimelineItemSummary<V>(v: V) { 101 + return validate<TimelineItemSummary & V>(v, id, hashTimelineItemSummary); 102 + }
+1 -1
lex/types/tools/ozone/moderation/getRecords.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ToolsOzoneModerationDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+1 -1
lex/types/tools/ozone/moderation/getRepos.ts
··· 1 1 /** 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 - import { type $Typed } from "../../../../util.ts"; 4 + import type { $Typed } from "../../../../util.ts"; 5 5 import type * as ToolsOzoneModerationDefs from "./defs.ts"; 6 6 7 7 export type QueryParams = {
+28
lex/types/tools/ozone/moderation/getSubjects.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneModerationDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + subjects: string[]; 8 + }; 9 + export type InputSchema = undefined; 10 + 11 + export interface OutputSchema { 12 + subjects: (ToolsOzoneModerationDefs.SubjectView)[]; 13 + } 14 + 15 + export type HandlerInput = void; 16 + 17 + export interface HandlerSuccess { 18 + encoding: "application/json"; 19 + body: OutputSchema; 20 + headers?: { [key: string]: string }; 21 + } 22 + 23 + export interface HandlerError { 24 + status: number; 25 + message?: string; 26 + } 27 + 28 + export type HandlerOutput = HandlerError | HandlerSuccess;
+51
lex/types/tools/ozone/moderation/listScheduledActions.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneModerationDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** Filter actions scheduled to execute after this time */ 10 + startsAfter?: string; 11 + /** Filter actions scheduled to execute before this time */ 12 + endsBefore?: string; 13 + /** Filter actions for specific DID subjects */ 14 + subjects?: (string)[]; 15 + /** Filter actions by status */ 16 + statuses: ( 17 + | "pending" 18 + | "executed" 19 + | "cancelled" 20 + | "failed" 21 + | (string & globalThis.Record<PropertyKey, never>) 22 + )[]; 23 + /** Maximum number of results to return */ 24 + limit?: number; 25 + /** Cursor for pagination */ 26 + cursor?: string; 27 + } 28 + 29 + export interface OutputSchema { 30 + actions: (ToolsOzoneModerationDefs.ScheduledActionView)[]; 31 + /** Cursor for next page of results */ 32 + cursor?: string; 33 + } 34 + 35 + export interface HandlerInput { 36 + encoding: "application/json"; 37 + body: InputSchema; 38 + } 39 + 40 + export interface HandlerSuccess { 41 + encoding: "application/json"; 42 + body: OutputSchema; 43 + headers?: { [key: string]: string }; 44 + } 45 + 46 + export interface HandlerError { 47 + status: number; 48 + message?: string; 49 + } 50 + 51 + export type HandlerOutput = HandlerError | HandlerSuccess;
+14
lex/types/tools/ozone/moderation/queryEvents.ts
··· 38 38 removedTags?: string[]; 39 39 reportTypes?: string[]; 40 40 policies?: string[]; 41 + /** If specified, only events where the modTool name matches any of the given values are returned */ 42 + modTool?: string[]; 43 + /** If specified, only events where the batchId matches the given value are returned */ 44 + batchId?: string; 45 + /** If specified, only events where the age assurance state matches the given value are returned */ 46 + ageAssuranceState?: 47 + | "pending" 48 + | "assured" 49 + | "unknown" 50 + | "reset" 51 + | "blocked" 52 + | (string & globalThis.Record<PropertyKey, never>); 53 + /** If specified, only events where strikeCount value is set are returned. */ 54 + withStrike?: boolean; 41 55 cursor?: string; 42 56 }; 43 57 export type InputSchema = undefined;
+16 -1
lex/types/tools/ozone/moderation/queryStatuses.ts
··· 39 39 /** When set to true, only muted subjects and reporters will be returned. */ 40 40 onlyMuted?: boolean; 41 41 /** Specify when fetching subjects in a certain state */ 42 - reviewState?: string; 42 + reviewState?: 43 + | "tools.ozone.moderation.defs#reviewOpen" 44 + | "tools.ozone.moderation.defs#reviewClosed" 45 + | "tools.ozone.moderation.defs#reviewEscalated" 46 + | "tools.ozone.moderation.defs#reviewNone" 47 + | (string & globalThis.Record<PropertyKey, never>); 43 48 ignoreSubjects?: string[]; 44 49 /** Get all subject statuses that were reviewed by a specific moderator */ 45 50 lastReviewedBy?: string; ··· 73 78 minTakendownRecordsCount?: number; 74 79 /** If specified, only subjects that have priority score value above the given value will be returned. */ 75 80 minPriorityScore?: number; 81 + /** If specified, only subjects that belong to an account that has at least this many active strikes will be returned. */ 82 + minStrikeCount?: number; 83 + /** If specified, only subjects with the given age assurance state will be returned. */ 84 + ageAssuranceState?: 85 + | "pending" 86 + | "assured" 87 + | "unknown" 88 + | "reset" 89 + | "blocked" 90 + | (string & globalThis.Record<PropertyKey, never>); 76 91 }; 77 92 export type InputSchema = undefined; 78 93
+130
lex/types/tools/ozone/moderation/scheduleAction.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as ToolsOzoneModerationDefs from "./defs.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "tools.ozone.moderation.scheduleAction"; 10 + 11 + export type QueryParams = globalThis.Record<PropertyKey, never>; 12 + 13 + export interface InputSchema { 14 + action: $Typed<Takedown> | { $type: string }; 15 + /** Array of DID subjects to schedule the action for */ 16 + subjects: (string)[]; 17 + createdBy: string; 18 + scheduling: SchedulingConfig; 19 + modTool?: ToolsOzoneModerationDefs.ModTool; 20 + } 21 + 22 + export type OutputSchema = ScheduledActionResults; 23 + 24 + export interface HandlerInput { 25 + encoding: "application/json"; 26 + body: InputSchema; 27 + } 28 + 29 + export interface HandlerSuccess { 30 + encoding: "application/json"; 31 + body: OutputSchema; 32 + headers?: { [key: string]: string }; 33 + } 34 + 35 + export interface HandlerError { 36 + status: number; 37 + message?: string; 38 + } 39 + 40 + export type HandlerOutput = HandlerError | HandlerSuccess; 41 + 42 + /** Schedule a takedown action */ 43 + export interface Takedown { 44 + $type?: "tools.ozone.moderation.scheduleAction#takedown"; 45 + comment?: string; 46 + /** Indicates how long the takedown should be in effect before automatically expiring. */ 47 + durationInHours?: number; 48 + /** If true, all other reports on content authored by this account will be resolved (acknowledged). */ 49 + acknowledgeAccountSubjects?: boolean; 50 + /** Names/Keywords of the policies that drove the decision. */ 51 + policies?: (string)[]; 52 + /** Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.). */ 53 + severityLevel?: string; 54 + /** Number of strikes to assign to the user when takedown is applied. */ 55 + strikeCount?: number; 56 + /** When the strike should expire. If not provided, the strike never expires. */ 57 + strikeExpiresAt?: string; 58 + /** Email content to be sent to the user upon takedown. */ 59 + emailContent?: string; 60 + /** Subject of the email to be sent to the user upon takedown. */ 61 + emailSubject?: string; 62 + } 63 + 64 + const hashTakedown = "takedown"; 65 + 66 + export function isTakedown<V>(v: V) { 67 + return is$typed(v, id, hashTakedown); 68 + } 69 + 70 + export function validateTakedown<V>(v: V) { 71 + return validate<Takedown & V>(v, id, hashTakedown); 72 + } 73 + 74 + /** Configuration for when the action should be executed */ 75 + export interface SchedulingConfig { 76 + $type?: "tools.ozone.moderation.scheduleAction#schedulingConfig"; 77 + /** Exact time to execute the action */ 78 + executeAt?: string; 79 + /** Earliest time to execute the action (for randomized scheduling) */ 80 + executeAfter?: string; 81 + /** Latest time to execute the action (for randomized scheduling) */ 82 + executeUntil?: string; 83 + } 84 + 85 + const hashSchedulingConfig = "schedulingConfig"; 86 + 87 + export function isSchedulingConfig<V>(v: V) { 88 + return is$typed(v, id, hashSchedulingConfig); 89 + } 90 + 91 + export function validateSchedulingConfig<V>(v: V) { 92 + return validate<SchedulingConfig & V>(v, id, hashSchedulingConfig); 93 + } 94 + 95 + export interface ScheduledActionResults { 96 + $type?: "tools.ozone.moderation.scheduleAction#scheduledActionResults"; 97 + succeeded: (string)[]; 98 + failed: (FailedScheduling)[]; 99 + } 100 + 101 + const hashScheduledActionResults = "scheduledActionResults"; 102 + 103 + export function isScheduledActionResults<V>(v: V) { 104 + return is$typed(v, id, hashScheduledActionResults); 105 + } 106 + 107 + export function validateScheduledActionResults<V>(v: V) { 108 + return validate<ScheduledActionResults & V>( 109 + v, 110 + id, 111 + hashScheduledActionResults, 112 + ); 113 + } 114 + 115 + export interface FailedScheduling { 116 + $type?: "tools.ozone.moderation.scheduleAction#failedScheduling"; 117 + subject: string; 118 + error: string; 119 + errorCode?: string; 120 + } 121 + 122 + const hashFailedScheduling = "failedScheduling"; 123 + 124 + export function isFailedScheduling<V>(v: V) { 125 + return is$typed(v, id, hashFailedScheduling); 126 + } 127 + 128 + export function validateFailedScheduling<V>(v: V) { 129 + return validate<FailedScheduling & V>(v, id, hashFailedScheduling); 130 + }
+131
lex/types/tools/ozone/report/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + const id = "tools.ozone.report.defs"; 5 + 6 + export type ReasonType = 7 + | "tools.ozone.report.defs#reasonAppeal" 8 + | "tools.ozone.report.defs#reasonOther" 9 + | "tools.ozone.report.defs#reasonViolenceAnimal" 10 + | "tools.ozone.report.defs#reasonViolenceThreats" 11 + | "tools.ozone.report.defs#reasonViolenceGraphicContent" 12 + | "tools.ozone.report.defs#reasonViolenceGlorification" 13 + | "tools.ozone.report.defs#reasonViolenceExtremistContent" 14 + | "tools.ozone.report.defs#reasonViolenceTrafficking" 15 + | "tools.ozone.report.defs#reasonViolenceOther" 16 + | "tools.ozone.report.defs#reasonSexualAbuseContent" 17 + | "tools.ozone.report.defs#reasonSexualNCII" 18 + | "tools.ozone.report.defs#reasonSexualDeepfake" 19 + | "tools.ozone.report.defs#reasonSexualAnimal" 20 + | "tools.ozone.report.defs#reasonSexualUnlabeled" 21 + | "tools.ozone.report.defs#reasonSexualOther" 22 + | "tools.ozone.report.defs#reasonChildSafetyCSAM" 23 + | "tools.ozone.report.defs#reasonChildSafetyGroom" 24 + | "tools.ozone.report.defs#reasonChildSafetyPrivacy" 25 + | "tools.ozone.report.defs#reasonChildSafetyHarassment" 26 + | "tools.ozone.report.defs#reasonChildSafetyOther" 27 + | "tools.ozone.report.defs#reasonHarassmentTroll" 28 + | "tools.ozone.report.defs#reasonHarassmentTargeted" 29 + | "tools.ozone.report.defs#reasonHarassmentHateSpeech" 30 + | "tools.ozone.report.defs#reasonHarassmentDoxxing" 31 + | "tools.ozone.report.defs#reasonHarassmentOther" 32 + | "tools.ozone.report.defs#reasonMisleadingBot" 33 + | "tools.ozone.report.defs#reasonMisleadingImpersonation" 34 + | "tools.ozone.report.defs#reasonMisleadingSpam" 35 + | "tools.ozone.report.defs#reasonMisleadingScam" 36 + | "tools.ozone.report.defs#reasonMisleadingElections" 37 + | "tools.ozone.report.defs#reasonMisleadingOther" 38 + | "tools.ozone.report.defs#reasonRuleSiteSecurity" 39 + | "tools.ozone.report.defs#reasonRuleProhibitedSales" 40 + | "tools.ozone.report.defs#reasonRuleBanEvasion" 41 + | "tools.ozone.report.defs#reasonRuleOther" 42 + | "tools.ozone.report.defs#reasonSelfHarmContent" 43 + | "tools.ozone.report.defs#reasonSelfHarmED" 44 + | "tools.ozone.report.defs#reasonSelfHarmStunts" 45 + | "tools.ozone.report.defs#reasonSelfHarmSubstances" 46 + | "tools.ozone.report.defs#reasonSelfHarmOther" 47 + | (string & globalThis.Record<PropertyKey, never>); 48 + 49 + /** Appeal a previously taken moderation action */ 50 + export const REASONAPPEAL = `${id}#reasonAppeal`; 51 + /** An issue not included in these options */ 52 + export const REASONOTHER = `${id}#reasonOther`; 53 + /** Animal welfare violations */ 54 + export const REASONVIOLENCEANIMAL = `${id}#reasonViolenceAnimal`; 55 + /** Threats or incitement */ 56 + export const REASONVIOLENCETHREATS = `${id}#reasonViolenceThreats`; 57 + /** Graphic violent content */ 58 + export const REASONVIOLENCEGRAPHICCONTENT = 59 + `${id}#reasonViolenceGraphicContent`; 60 + /** Glorification of violence */ 61 + export const REASONVIOLENCEGLORIFICATION = `${id}#reasonViolenceGlorification`; 62 + /** Extremist content. These reports will be sent only be sent to the application's Moderation Authority. */ 63 + export const REASONVIOLENCEEXTREMISTCONTENT = 64 + `${id}#reasonViolenceExtremistContent`; 65 + /** Human trafficking */ 66 + export const REASONVIOLENCETRAFFICKING = `${id}#reasonViolenceTrafficking`; 67 + /** Other violent content */ 68 + export const REASONVIOLENCEOTHER = `${id}#reasonViolenceOther`; 69 + /** Adult sexual abuse content */ 70 + export const REASONSEXUALABUSECONTENT = `${id}#reasonSexualAbuseContent`; 71 + /** Non-consensual intimate imagery */ 72 + export const REASONSEXUALNCII = `${id}#reasonSexualNCII`; 73 + /** Deepfake adult content */ 74 + export const REASONSEXUALDEEPFAKE = `${id}#reasonSexualDeepfake`; 75 + /** Animal sexual abuse */ 76 + export const REASONSEXUALANIMAL = `${id}#reasonSexualAnimal`; 77 + /** Unlabelled adult content */ 78 + export const REASONSEXUALUNLABELED = `${id}#reasonSexualUnlabeled`; 79 + /** Other sexual violence content */ 80 + export const REASONSEXUALOTHER = `${id}#reasonSexualOther`; 81 + /** Child sexual abuse material (CSAM). These reports will be sent only be sent to the application's Moderation Authority. */ 82 + export const REASONCHILDSAFETYCSAM = `${id}#reasonChildSafetyCSAM`; 83 + /** Grooming or predatory behavior. These reports will be sent only be sent to the application's Moderation Authority. */ 84 + export const REASONCHILDSAFETYGROOM = `${id}#reasonChildSafetyGroom`; 85 + /** Privacy violation involving a minor */ 86 + export const REASONCHILDSAFETYPRIVACY = `${id}#reasonChildSafetyPrivacy`; 87 + /** Harassment or bullying of minors */ 88 + export const REASONCHILDSAFETYHARASSMENT = `${id}#reasonChildSafetyHarassment`; 89 + /** Other child safety. These reports will be sent only be sent to the application's Moderation Authority. */ 90 + export const REASONCHILDSAFETYOTHER = `${id}#reasonChildSafetyOther`; 91 + /** Trolling */ 92 + export const REASONHARASSMENTTROLL = `${id}#reasonHarassmentTroll`; 93 + /** Targeted harassment */ 94 + export const REASONHARASSMENTTARGETED = `${id}#reasonHarassmentTargeted`; 95 + /** Hate speech */ 96 + export const REASONHARASSMENTHATESPEECH = `${id}#reasonHarassmentHateSpeech`; 97 + /** Doxxing */ 98 + export const REASONHARASSMENTDOXXING = `${id}#reasonHarassmentDoxxing`; 99 + /** Other harassing or hateful content */ 100 + export const REASONHARASSMENTOTHER = `${id}#reasonHarassmentOther`; 101 + /** Fake account or bot */ 102 + export const REASONMISLEADINGBOT = `${id}#reasonMisleadingBot`; 103 + /** Impersonation */ 104 + export const REASONMISLEADINGIMPERSONATION = 105 + `${id}#reasonMisleadingImpersonation`; 106 + /** Spam */ 107 + export const REASONMISLEADINGSPAM = `${id}#reasonMisleadingSpam`; 108 + /** Scam */ 109 + export const REASONMISLEADINGSCAM = `${id}#reasonMisleadingScam`; 110 + /** False information about elections */ 111 + export const REASONMISLEADINGELECTIONS = `${id}#reasonMisleadingElections`; 112 + /** Other misleading content */ 113 + export const REASONMISLEADINGOTHER = `${id}#reasonMisleadingOther`; 114 + /** Hacking or system attacks */ 115 + export const REASONRULESITESECURITY = `${id}#reasonRuleSiteSecurity`; 116 + /** Promoting or selling prohibited items or services */ 117 + export const REASONRULEPROHIBITEDSALES = `${id}#reasonRuleProhibitedSales`; 118 + /** Banned user returning */ 119 + export const REASONRULEBANEVASION = `${id}#reasonRuleBanEvasion`; 120 + /** Other */ 121 + export const REASONRULEOTHER = `${id}#reasonRuleOther`; 122 + /** Content promoting or depicting self-harm */ 123 + export const REASONSELFHARMCONTENT = `${id}#reasonSelfHarmContent`; 124 + /** Eating disorders */ 125 + export const REASONSELFHARMED = `${id}#reasonSelfHarmED`; 126 + /** Dangerous challenges or activities */ 127 + export const REASONSELFHARMSTUNTS = `${id}#reasonSelfHarmStunts`; 128 + /** Dangerous substances or drug abuse */ 129 + export const REASONSELFHARMSUBSTANCES = `${id}#reasonSelfHarmSubstances`; 130 + /** Other dangerous content */ 131 + export const REASONSELFHARMOTHER = `${id}#reasonSelfHarmOther`;
+39
lex/types/tools/ozone/safelink/addRule.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneSafelinkDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** The URL or domain to apply the rule to */ 10 + url: string; 11 + pattern: ToolsOzoneSafelinkDefs.PatternType; 12 + action: ToolsOzoneSafelinkDefs.ActionType; 13 + reason: ToolsOzoneSafelinkDefs.ReasonType; 14 + /** Optional comment about the decision */ 15 + comment?: string; 16 + /** Author DID. Only respected when using admin auth */ 17 + createdBy?: string; 18 + } 19 + 20 + export type OutputSchema = ToolsOzoneSafelinkDefs.Event; 21 + 22 + export interface HandlerInput { 23 + encoding: "application/json"; 24 + body: InputSchema; 25 + } 26 + 27 + export interface HandlerSuccess { 28 + encoding: "application/json"; 29 + body: OutputSchema; 30 + headers?: { [key: string]: string }; 31 + } 32 + 33 + export interface HandlerError { 34 + status: number; 35 + message?: string; 36 + error?: "InvalidUrl" | "RuleAlreadyExists"; 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess;
+85
lex/types/tools/ozone/safelink/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "tools.ozone.safelink.defs"; 9 + 10 + /** An event for URL safety decisions */ 11 + export interface Event { 12 + $type?: "tools.ozone.safelink.defs#event"; 13 + /** Auto-incrementing row ID */ 14 + id: number; 15 + eventType: EventType; 16 + /** The URL that this rule applies to */ 17 + url: string; 18 + pattern: PatternType; 19 + action: ActionType; 20 + reason: ReasonType; 21 + /** DID of the user who created this rule */ 22 + createdBy: string; 23 + createdAt: string; 24 + /** Optional comment about the decision */ 25 + comment?: string; 26 + } 27 + 28 + const hashEvent = "event"; 29 + 30 + export function isEvent<V>(v: V) { 31 + return is$typed(v, id, hashEvent); 32 + } 33 + 34 + export function validateEvent<V>(v: V) { 35 + return validate<Event & V>(v, id, hashEvent); 36 + } 37 + 38 + export type EventType = 39 + | "addRule" 40 + | "updateRule" 41 + | "removeRule" 42 + | (string & globalThis.Record<PropertyKey, never>); 43 + export type PatternType = 44 + | "domain" 45 + | "url" 46 + | (string & globalThis.Record<PropertyKey, never>); 47 + export type ActionType = 48 + | "block" 49 + | "warn" 50 + | "whitelist" 51 + | (string & globalThis.Record<PropertyKey, never>); 52 + export type ReasonType = 53 + | "csam" 54 + | "spam" 55 + | "phishing" 56 + | "none" 57 + | (string & globalThis.Record<PropertyKey, never>); 58 + 59 + /** Input for creating a URL safety rule */ 60 + export interface UrlRule { 61 + $type?: "tools.ozone.safelink.defs#urlRule"; 62 + /** The URL or domain to apply the rule to */ 63 + url: string; 64 + pattern: PatternType; 65 + action: ActionType; 66 + reason: ReasonType; 67 + /** Optional comment about the decision */ 68 + comment?: string; 69 + /** DID of the user added the rule. */ 70 + createdBy: string; 71 + /** Timestamp when the rule was created */ 72 + createdAt: string; 73 + /** Timestamp when the rule was last updated */ 74 + updatedAt: string; 75 + } 76 + 77 + const hashUrlRule = "urlRule"; 78 + 79 + export function isUrlRule<V>(v: V) { 80 + return is$typed(v, id, hashUrlRule); 81 + } 82 + 83 + export function validateUrlRule<V>(v: V) { 84 + return validate<UrlRule & V>(v, id, hashUrlRule); 85 + }
+46
lex/types/tools/ozone/safelink/queryEvents.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneSafelinkDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** Cursor for pagination */ 10 + cursor?: string; 11 + /** Maximum number of results to return */ 12 + limit?: number; 13 + /** Filter by specific URLs or domains */ 14 + urls?: (string)[]; 15 + /** Filter by pattern type */ 16 + patternType?: string; 17 + /** Sort direction */ 18 + sortDirection?: 19 + | "asc" 20 + | "desc" 21 + | (string & globalThis.Record<PropertyKey, never>); 22 + } 23 + 24 + export interface OutputSchema { 25 + /** Next cursor for pagination. Only present if there are more results. */ 26 + cursor?: string; 27 + events: (ToolsOzoneSafelinkDefs.Event)[]; 28 + } 29 + 30 + export interface HandlerInput { 31 + encoding: "application/json"; 32 + body: InputSchema; 33 + } 34 + 35 + export interface HandlerSuccess { 36 + encoding: "application/json"; 37 + body: OutputSchema; 38 + headers?: { [key: string]: string }; 39 + } 40 + 41 + export interface HandlerError { 42 + status: number; 43 + message?: string; 44 + } 45 + 46 + export type HandlerOutput = HandlerError | HandlerSuccess;
+52
lex/types/tools/ozone/safelink/queryRules.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneSafelinkDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** Cursor for pagination */ 10 + cursor?: string; 11 + /** Maximum number of results to return */ 12 + limit?: number; 13 + /** Filter by specific URLs or domains */ 14 + urls?: (string)[]; 15 + /** Filter by pattern type */ 16 + patternType?: string; 17 + /** Filter by action types */ 18 + actions?: (string)[]; 19 + /** Filter by reason type */ 20 + reason?: string; 21 + /** Filter by rule creator */ 22 + createdBy?: string; 23 + /** Sort direction */ 24 + sortDirection?: 25 + | "asc" 26 + | "desc" 27 + | (string & globalThis.Record<PropertyKey, never>); 28 + } 29 + 30 + export interface OutputSchema { 31 + /** Next cursor for pagination. Only present if there are more results. */ 32 + cursor?: string; 33 + rules: (ToolsOzoneSafelinkDefs.UrlRule)[]; 34 + } 35 + 36 + export interface HandlerInput { 37 + encoding: "application/json"; 38 + body: InputSchema; 39 + } 40 + 41 + export interface HandlerSuccess { 42 + encoding: "application/json"; 43 + body: OutputSchema; 44 + headers?: { [key: string]: string }; 45 + } 46 + 47 + export interface HandlerError { 48 + status: number; 49 + message?: string; 50 + } 51 + 52 + export type HandlerOutput = HandlerError | HandlerSuccess;
+37
lex/types/tools/ozone/safelink/removeRule.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneSafelinkDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** The URL or domain to remove the rule for */ 10 + url: string; 11 + pattern: ToolsOzoneSafelinkDefs.PatternType; 12 + /** Optional comment about why the rule is being removed */ 13 + comment?: string; 14 + /** Optional DID of the user. Only respected when using admin auth. */ 15 + createdBy?: string; 16 + } 17 + 18 + export type OutputSchema = ToolsOzoneSafelinkDefs.Event; 19 + 20 + export interface HandlerInput { 21 + encoding: "application/json"; 22 + body: InputSchema; 23 + } 24 + 25 + export interface HandlerSuccess { 26 + encoding: "application/json"; 27 + body: OutputSchema; 28 + headers?: { [key: string]: string }; 29 + } 30 + 31 + export interface HandlerError { 32 + status: number; 33 + message?: string; 34 + error?: "RuleNotFound"; 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess;
+39
lex/types/tools/ozone/safelink/updateRule.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneSafelinkDefs from "./defs.ts"; 5 + 6 + export type QueryParams = globalThis.Record<PropertyKey, never>; 7 + 8 + export interface InputSchema { 9 + /** The URL or domain to update the rule for */ 10 + url: string; 11 + pattern: ToolsOzoneSafelinkDefs.PatternType; 12 + action: ToolsOzoneSafelinkDefs.ActionType; 13 + reason: ToolsOzoneSafelinkDefs.ReasonType; 14 + /** Optional comment about the update */ 15 + comment?: string; 16 + /** Optional DID to credit as the creator. Only respected for admin_token authentication. */ 17 + createdBy?: string; 18 + } 19 + 20 + export type OutputSchema = ToolsOzoneSafelinkDefs.Event; 21 + 22 + export interface HandlerInput { 23 + encoding: "application/json"; 24 + body: InputSchema; 25 + } 26 + 27 + export interface HandlerSuccess { 28 + encoding: "application/json"; 29 + body: OutputSchema; 30 + headers?: { [key: string]: string }; 31 + } 32 + 33 + export interface HandlerError { 34 + status: number; 35 + message?: string; 36 + error?: "RuleNotFound"; 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess;
+3
lex/types/tools/ozone/server/getConfig.ts
··· 16 16 blobDivert?: ServiceConfig; 17 17 chat?: ServiceConfig; 18 18 viewer?: ViewerConfig; 19 + /** The did of the verifier used for verification. */ 20 + verifierDid?: string; 19 21 } 20 22 21 23 export type HandlerInput = void; ··· 54 56 | "tools.ozone.team.defs#roleAdmin" 55 57 | "tools.ozone.team.defs#roleModerator" 56 58 | "tools.ozone.team.defs#roleTriage" 59 + | "tools.ozone.team.defs#roleVerifier" 57 60 | (string & globalThis.Record<PropertyKey, never>); 58 61 } 59 62
+1
lex/types/tools/ozone/setting/defs.ts
··· 19 19 | "tools.ozone.team.defs#roleModerator" 20 20 | "tools.ozone.team.defs#roleTriage" 21 21 | "tools.ozone.team.defs#roleAdmin" 22 + | "tools.ozone.team.defs#roleVerifier" 22 23 | (string & globalThis.Record<PropertyKey, never>); 23 24 scope: 24 25 | "instance"
+1
lex/types/tools/ozone/setting/upsertOption.ts
··· 16 16 managerRole?: 17 17 | "tools.ozone.team.defs#roleModerator" 18 18 | "tools.ozone.team.defs#roleTriage" 19 + | "tools.ozone.team.defs#roleVerifier" 19 20 | "tools.ozone.team.defs#roleAdmin" 20 21 | (string & globalThis.Record<PropertyKey, never>); 21 22 }
+1
lex/types/tools/ozone/team/addMember.ts
··· 10 10 role: 11 11 | "tools.ozone.team.defs#roleAdmin" 12 12 | "tools.ozone.team.defs#roleModerator" 13 + | "tools.ozone.team.defs#roleVerifier" 13 14 | "tools.ozone.team.defs#roleTriage" 14 15 | (string & globalThis.Record<PropertyKey, never>); 15 16 }
+6 -3
lex/types/tools/ozone/team/defs.ts
··· 17 17 updatedAt?: string; 18 18 lastUpdatedBy?: string; 19 19 role: 20 - | "lex:tools.ozone.team.defs#roleAdmin" 21 - | "lex:tools.ozone.team.defs#roleModerator" 22 - | "lex:tools.ozone.team.defs#roleTriage" 20 + | "tools.ozone.team.defs#roleAdmin" 21 + | "tools.ozone.team.defs#roleModerator" 22 + | "tools.ozone.team.defs#roleTriage" 23 + | "tools.ozone.team.defs#roleVerifier" 23 24 | (string & globalThis.Record<PropertyKey, never>); 24 25 } 25 26 ··· 39 40 export const ROLEMODERATOR = `${id}#roleModerator`; 40 41 /** Triage role. Mostly intended for monitoring and escalating issues. */ 41 42 export const ROLETRIAGE = `${id}#roleTriage`; 43 + /** Verifier role. Only allowed to issue verifications. */ 44 + export const ROLEVERIFIER = `${id}#roleVerifier`;
+1
lex/types/tools/ozone/team/listMembers.ts
··· 4 4 import type * as ToolsOzoneTeamDefs from "./defs.ts"; 5 5 6 6 export type QueryParams = { 7 + q?: string; 7 8 disabled?: boolean; 8 9 roles?: string[]; 9 10 limit: number;
+1
lex/types/tools/ozone/team/updateMember.ts
··· 11 11 role?: 12 12 | "tools.ozone.team.defs#roleAdmin" 13 13 | "tools.ozone.team.defs#roleModerator" 14 + | "tools.ozone.team.defs#roleVerifier" 14 15 | "tools.ozone.team.defs#roleTriage" 15 16 | (string & globalThis.Record<PropertyKey, never>); 16 17 }
+52
lex/types/tools/ozone/verification/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as ToolsOzoneModerationDefs from "../moderation/defs.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "tools.ozone.verification.defs"; 10 + 11 + /** Verification data for the associated subject. */ 12 + export interface VerificationView { 13 + $type?: "tools.ozone.verification.defs#verificationView"; 14 + /** The user who issued this verification. */ 15 + issuer: string; 16 + /** The AT-URI of the verification record. */ 17 + uri: string; 18 + /** The subject of the verification. */ 19 + subject: string; 20 + /** 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. */ 21 + handle: string; 22 + /** 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. */ 23 + displayName: string; 24 + /** Timestamp when the verification was created. */ 25 + createdAt: string; 26 + /** Describes the reason for revocation, also indicating that the verification is no longer valid. */ 27 + revokeReason?: string; 28 + /** Timestamp when the verification was revoked. */ 29 + revokedAt?: string; 30 + /** The user who revoked this verification. */ 31 + revokedBy?: string; 32 + subjectProfile?: { $type: string }; 33 + issuerProfile?: { $type: string }; 34 + subjectRepo?: 35 + | $Typed<ToolsOzoneModerationDefs.RepoViewDetail> 36 + | $Typed<ToolsOzoneModerationDefs.RepoViewNotFound> 37 + | { $type: string }; 38 + issuerRepo?: 39 + | $Typed<ToolsOzoneModerationDefs.RepoViewDetail> 40 + | $Typed<ToolsOzoneModerationDefs.RepoViewNotFound> 41 + | { $type: string }; 42 + } 43 + 44 + const hashVerificationView = "verificationView"; 45 + 46 + export function isVerificationView<V>(v: V) { 47 + return is$typed(v, id, hashVerificationView); 48 + } 49 + 50 + export function validateVerificationView<V>(v: V) { 51 + return validate<VerificationView & V>(v, id, hashVerificationView); 52 + }
+80
lex/types/tools/ozone/verification/grantVerifications.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + import type * as ToolsOzoneVerificationDefs from "./defs.ts"; 7 + 8 + const is$typed = _is$typed, validate = _validate; 9 + const id = "tools.ozone.verification.grantVerifications"; 10 + 11 + export type QueryParams = globalThis.Record<PropertyKey, never>; 12 + 13 + export interface InputSchema { 14 + /** Array of verification requests to process */ 15 + verifications: (VerificationInput)[]; 16 + } 17 + 18 + export interface OutputSchema { 19 + verifications: (ToolsOzoneVerificationDefs.VerificationView)[]; 20 + failedVerifications: (GrantError)[]; 21 + } 22 + 23 + export interface HandlerInput { 24 + encoding: "application/json"; 25 + body: InputSchema; 26 + } 27 + 28 + export interface HandlerSuccess { 29 + encoding: "application/json"; 30 + body: OutputSchema; 31 + headers?: { [key: string]: string }; 32 + } 33 + 34 + export interface HandlerError { 35 + status: number; 36 + message?: string; 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess; 40 + 41 + export interface VerificationInput { 42 + $type?: "tools.ozone.verification.grantVerifications#verificationInput"; 43 + /** The did of the subject being verified */ 44 + subject: string; 45 + /** Handle of the subject the verification applies to at the moment of verifying. */ 46 + handle: string; 47 + /** Display name of the subject the verification applies to at the moment of verifying. */ 48 + displayName: string; 49 + /** Timestamp for verification record. Defaults to current time when not specified. */ 50 + createdAt?: string; 51 + } 52 + 53 + const hashVerificationInput = "verificationInput"; 54 + 55 + export function isVerificationInput<V>(v: V) { 56 + return is$typed(v, id, hashVerificationInput); 57 + } 58 + 59 + export function validateVerificationInput<V>(v: V) { 60 + return validate<VerificationInput & V>(v, id, hashVerificationInput); 61 + } 62 + 63 + /** Error object for failed verifications. */ 64 + export interface GrantError { 65 + $type?: "tools.ozone.verification.grantVerifications#grantError"; 66 + /** Error message describing the reason for failure. */ 67 + error: string; 68 + /** The did of the subject being verified */ 69 + subject: string; 70 + } 71 + 72 + const hashGrantError = "grantError"; 73 + 74 + export function isGrantError<V>(v: V) { 75 + return is$typed(v, id, hashGrantError); 76 + } 77 + 78 + export function validateGrantError<V>(v: V) { 79 + return validate<GrantError & V>(v, id, hashGrantError); 80 + }
+44
lex/types/tools/ozone/verification/listVerifications.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import type * as ToolsOzoneVerificationDefs from "./defs.ts"; 5 + 6 + export type QueryParams = { 7 + /** Pagination cursor */ 8 + cursor?: string; 9 + /** Maximum number of results to return */ 10 + limit: number; 11 + /** Filter to verifications created after this timestamp */ 12 + createdAfter?: string; 13 + /** Filter to verifications created before this timestamp */ 14 + createdBefore?: string; 15 + /** Filter to verifications from specific issuers */ 16 + issuers?: string[]; 17 + /** Filter to specific verified DIDs */ 18 + subjects?: string[]; 19 + /** Sort direction for creation date */ 20 + sortDirection: "asc" | "desc"; 21 + /** Filter to verifications that are revoked or not. By default, includes both. */ 22 + isRevoked?: boolean; 23 + }; 24 + export type InputSchema = undefined; 25 + 26 + export interface OutputSchema { 27 + cursor?: string; 28 + verifications: (ToolsOzoneVerificationDefs.VerificationView)[]; 29 + } 30 + 31 + export type HandlerInput = void; 32 + 33 + export interface HandlerSuccess { 34 + encoding: "application/json"; 35 + body: OutputSchema; 36 + headers?: { [key: string]: string }; 37 + } 38 + 39 + export interface HandlerError { 40 + status: number; 41 + message?: string; 42 + } 43 + 44 + export type HandlerOutput = HandlerError | HandlerSuccess;
+61
lex/types/tools/ozone/verification/revokeVerifications.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { validate as _validate } from "../../../../lexicons.ts"; 5 + import { is$typed as _is$typed } from "../../../../util.ts"; 6 + 7 + const is$typed = _is$typed, validate = _validate; 8 + const id = "tools.ozone.verification.revokeVerifications"; 9 + 10 + export type QueryParams = globalThis.Record<PropertyKey, never>; 11 + 12 + export interface InputSchema { 13 + /** Array of verification record uris to revoke */ 14 + uris: (string)[]; 15 + /** Reason for revoking the verification. This is optional and can be omitted if not needed. */ 16 + revokeReason?: string; 17 + } 18 + 19 + export interface OutputSchema { 20 + /** List of verification uris successfully revoked */ 21 + revokedVerifications: (string)[]; 22 + /** List of verification uris that couldn't be revoked, including failure reasons */ 23 + failedRevocations: (RevokeError)[]; 24 + } 25 + 26 + export interface HandlerInput { 27 + encoding: "application/json"; 28 + body: InputSchema; 29 + } 30 + 31 + export interface HandlerSuccess { 32 + encoding: "application/json"; 33 + body: OutputSchema; 34 + headers?: { [key: string]: string }; 35 + } 36 + 37 + export interface HandlerError { 38 + status: number; 39 + message?: string; 40 + } 41 + 42 + export type HandlerOutput = HandlerError | HandlerSuccess; 43 + 44 + /** Error object for failed revocations */ 45 + export interface RevokeError { 46 + $type?: "tools.ozone.verification.revokeVerifications#revokeError"; 47 + /** The AT-URI of the verification record that failed to revoke. */ 48 + uri: string; 49 + /** Description of the error that occurred during revocation. */ 50 + error: string; 51 + } 52 + 53 + const hashRevokeError = "revokeError"; 54 + 55 + export function isRevokeError<V>(v: V) { 56 + return is$typed(v, id, hashRevokeError); 57 + } 58 + 59 + export function validateRevokeError<V>(v: V) { 60 + return validate<RevokeError & V>(v, id, hashRevokeError); 61 + }
+1 -1
lex/util.ts
··· 2 2 * GENERATED CODE - DO NOT MODIFY 3 3 */ 4 4 5 - import { type ValidationResult } from "@atp/lexicon"; 5 + import type { ValidationResult } from "@atp/lexicon"; 6 6 7 7 export type OmitKey<T, K extends keyof T> = { 8 8 [K2 in keyof T as K2 extends K ? never : K2]: T[K2];
+8 -6
main.ts
··· 9 9 10 10 import describeFeedGenerator from "./api/describeFeedGenerator.ts"; 11 11 import getFeedSkeleton from "./api/getFeedSkeleton.ts"; 12 - import wellKnownRouter from "./utils/well-known.ts"; 12 + import wellKnown from "./api/well-known.ts"; 13 + import health from "./api/health.ts"; 13 14 14 15 await configure({ 15 16 sinks: { ··· 31 32 32 33 const logger = getLogger("feedgen"); 33 34 34 - const ownDid = `did:web:${env.FEEDGEN_DOMAIN}`; 35 + const ownDid = `did:web:${env.SPRK_FEEDGEN_DOMAIN}`; 35 36 const didResolver = new DidResolver({}); 36 37 const authVerifier = new AuthVerifier(ownDid, didResolver); 37 38 const db = new Database(); ··· 93 94 Deno.exit(1); 94 95 } 95 96 96 - const { HOST, PORT } = env; 97 + const { SPRK_HOST, SPRK_PORT } = env; 97 98 Deno.serve({ 98 - hostname: HOST, 99 - port: PORT, 99 + hostname: SPRK_HOST, 100 + port: SPRK_PORT, 100 101 onListen: (info) => { 101 102 logger.info(`Server listening on ${info.hostname}:${info.port}`); 102 103 }, ··· 114 115 115 116 logger.info("Feed Generator service is running"); 116 117 117 - app.route("/", wellKnownRouter()); 118 + app.route("/.well-known", wellKnown); 119 + app.route("/", health); 118 120 119 121 return app; 120 122 }
+7 -9
utils/env.ts
··· 6 6 export const env = { 7 7 NODE_ENV: envStr("NODE_ENV"), 8 8 9 - FEEDGEN_DOMAIN: envStr("FEEDGEN_DOMAIN"), 10 - 11 - DB_NAME: envStr("DB_NAME"), 12 - DB_HOST: envStr("DB_HOST"), 13 - DB_PORT: envInt("DB_PORT"), 14 - DB_USER: envStr("DB_USER"), 15 - DB_PASSWORD: envStr("DB_PASSWORD"), 9 + SPRK_FEEDGEN_DOMAIN: envStr("FEEDGEN_DOMAIN"), 10 + SPRK_DB_NAME: envStr("SPRK_DB_NAME"), 11 + SPRK_DB_URI: envStr("SPRK_DB_URI") ?? "mongo://localhost:27017", 12 + SPRK_DB_USER: envStr("SPRK_DB_USER"), 13 + SPRK_DB_PASS: envStr("SPRK_DB_PASS"), 16 14 17 - HOST: envStr("HOST"), 18 - PORT: envInt("PORT"), 15 + SPRK_HOST: envStr("SPRK_HOST"), 16 + SPRK_PORT: envInt("SPRK_PORT"), 19 17 };
-24
utils/well-known.ts
··· 1 - import { Hono } from "hono"; 2 - import { env } from "../utils/env.ts"; 3 - 4 - const wellKnownRouter = () => { 5 - const router = new Hono(); 6 - 7 - router.get("/.well-known/did.json", (c) => { 8 - return c.json({ 9 - "@context": ["https://www.w3.org/ns/did/v1"], 10 - id: `did:web:${env.FEEDGEN_DOMAIN}`, 11 - service: [ 12 - { 13 - id: "#sprk_fg", 14 - type: "SprkFeedGenerator", 15 - serviceEndpoint: `https://${env.FEEDGEN_DOMAIN}`, 16 - }, 17 - ], 18 - }); 19 - }); 20 - 21 - return router; 22 - }; 23 - 24 - export default wellKnownRouter;