{ "openapi": "3.1.0", "info": { "title": "AT Protocol XRPC API", "summary": "An unofficial conversion of AT Protocol's lexicons to OpenAPI's schema format.", "version": "0.0.0", "license": { "name": "MIT License", "identifier": "MIT" } }, "servers": [ { "url": "https://bsky.social/xrpc/", "description": "AT Protocol PDS XRPC server" }, { "url": "https://api.bsky.app/xrpc/", "description": "AT Protocol AppView XRPC server" } ], "paths": { "/app.bsky.actor.getPreferences": { "get": { "tags": [ "app.bsky.actor" ], "summary": "Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth.", "operationId": "app.bsky.actor.getPreferences", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "preferences" ], "properties": { "preferences": { "$ref": "#/components/schemas/app.bsky.actor.defs.preferences" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.actor.getProfile": { "get": { "tags": [ "app.bsky.actor" ], "summary": "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.", "operationId": "app.bsky.actor.getProfile", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "description": "Handle or DID of account to fetch profile of.", "required": true, "schema": { "type": "string", "description": "Handle or DID of account to fetch profile of.", "format": "at-identifier" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewDetailed" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.actor.getProfiles": { "get": { "tags": [ "app.bsky.actor" ], "summary": "Get detailed profile views of multiple actors.", "operationId": "app.bsky.actor.getProfiles", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actors", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "at-identifier" }, "maxItems": 25 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "profiles" ], "properties": { "profiles": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewDetailed" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.actor.getSuggestions": { "get": { "tags": [ "app.bsky.actor" ], "summary": "Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding.", "operationId": "app.bsky.actor.getSuggestions", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actors" ], "properties": { "cursor": { "type": "string" }, "actors": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } }, "recId": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.actor.putPreferences": { "post": { "tags": [ "app.bsky.actor" ], "summary": "Set the private preferences attached to the account.", "operationId": "app.bsky.actor.putPreferences", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "preferences" ], "properties": { "preferences": { "$ref": "#/components/schemas/app.bsky.actor.defs.preferences" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.actor.searchActors": { "get": { "tags": [ "app.bsky.actor" ], "summary": "Find actors (profiles) matching search criteria. Does not require auth.", "operationId": "app.bsky.actor.searchActors", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "term", "in": "query", "description": "DEPRECATED: use 'q' instead.", "required": false, "schema": { "type": "string", "description": "DEPRECATED: use 'q' instead." } }, { "name": "q", "in": "query", "description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", "required": false, "schema": { "type": "string", "description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actors" ], "properties": { "cursor": { "type": "string" }, "actors": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.actor.searchActorsTypeahead": { "get": { "tags": [ "app.bsky.actor" ], "summary": "Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth.", "operationId": "app.bsky.actor.searchActorsTypeahead", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "term", "in": "query", "description": "DEPRECATED: use 'q' instead.", "required": false, "schema": { "type": "string", "description": "DEPRECATED: use 'q' instead." } }, { "name": "q", "in": "query", "description": "Search query prefix; not a full query string.", "required": false, "schema": { "type": "string", "description": "Search query prefix; not a full query string." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actors" ], "properties": { "actors": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.ageassurance.begin": { "post": { "tags": [ "app.bsky.ageassurance" ], "summary": "Initiate Age Assurance for an account.", "operationId": "app.bsky.ageassurance.begin", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "email", "language", "countryCode" ], "properties": { "email": { "type": "string", "description": "The user's email address to receive Age Assurance instructions." }, "language": { "type": "string", "description": "The user's preferred language for communication during the Age Assurance process." }, "countryCode": { "type": "string", "description": "An ISO 3166-1 alpha-2 code of the user's location." }, "regionCode": { "type": "string", "description": "An optional ISO 3166-2 code of the user's region or state within the country." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.state" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidEmail" }, { "const": "DidTooLong" }, { "const": "InvalidInitiation" }, { "const": "RegionNotSupported" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.ageassurance.getConfig": { "get": { "tags": [ "app.bsky.ageassurance" ], "summary": "Returns Age Assurance configuration for use on the client.", "operationId": "app.bsky.ageassurance.getConfig", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.config" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.ageassurance.getState": { "get": { "tags": [ "app.bsky.ageassurance" ], "summary": "Returns server-computed Age Assurance state, if available, and any additional metadata needed to compute Age Assurance state client-side.", "operationId": "app.bsky.ageassurance.getState", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "countryCode", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "regionCode", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "state", "metadata" ], "properties": { "state": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.state" }, "metadata": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.stateMetadata" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.bookmark.createBookmark": { "post": { "tags": [ "app.bsky.bookmark" ], "summary": "Creates a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", "operationId": "app.bsky.bookmark.createBookmark", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "cid" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "UnsupportedCollection" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.bookmark.deleteBookmark": { "post": { "tags": [ "app.bsky.bookmark" ], "summary": "Deletes a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", "operationId": "app.bsky.bookmark.deleteBookmark", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "uri" ], "properties": { "uri": { "type": "string", "format": "at-uri" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "UnsupportedCollection" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.bookmark.getBookmarks": { "get": { "tags": [ "app.bsky.bookmark" ], "summary": "Gets views of records bookmarked by the authenticated user. Requires authentication.", "operationId": "app.bsky.bookmark.getBookmarks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "bookmarks" ], "properties": { "cursor": { "type": "string" }, "bookmarks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.bookmark.defs.bookmarkView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.dismissMatch": { "post": { "tags": [ "app.bsky.contact" ], "summary": "Removes a match that was found via contact import. It shouldn't appear again if the same contact is re-imported. Requires authentication.", "operationId": "app.bsky.contact.dismissMatch", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "subject" ], "properties": { "subject": { "type": "string", "description": "The subject's DID to dismiss the match with.", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidDid" }, { "const": "InternalError" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.getMatches": { "get": { "tags": [ "app.bsky.contact" ], "summary": "Returns the matched contacts (contacts that were mutually imported). Excludes dismissed matches. Requires authentication.", "operationId": "app.bsky.contact.getMatches", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "matches" ], "properties": { "cursor": { "type": "string" }, "matches": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidDid" }, { "const": "InvalidLimit" }, { "const": "InvalidCursor" }, { "const": "InternalError" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.getSyncStatus": { "get": { "tags": [ "app.bsky.contact" ], "summary": "Gets the user's current contact import status. Requires authentication.", "operationId": "app.bsky.contact.getSyncStatus", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "syncStatus": { "$ref": "#/components/schemas/app.bsky.contact.defs.syncStatus" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidDid" }, { "const": "InternalError" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.importContacts": { "post": { "tags": [ "app.bsky.contact" ], "summary": "Import contacts for securely matching with other users. This follows the protocol explained in https://docs.bsky.app/blog/contact-import-rfc. Requires authentication.", "operationId": "app.bsky.contact.importContacts", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "token", "contacts" ], "properties": { "token": { "type": "string", "description": "JWT to authenticate the call. Use the JWT received as a response to the call to `app.bsky.contact.verifyPhone`." }, "contacts": { "type": "array", "items": { "type": "string" }, "maxItems": 1000 } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "matchesAndContactIndexes" ], "properties": { "matchesAndContactIndexes": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.contact.defs.matchAndContactIndex" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidDid" }, { "const": "InvalidContacts" }, { "const": "TooManyContacts" }, { "const": "InvalidToken" }, { "const": "InternalError" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.removeData": { "post": { "tags": [ "app.bsky.contact" ], "summary": "Removes all stored hashes used for contact matching, existing matches, and sync status. Requires authentication.", "operationId": "app.bsky.contact.removeData", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidDid" }, { "const": "InternalError" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.sendNotification": { "post": { "tags": [ "app.bsky.contact" ], "summary": "System endpoint to send notifications related to contact imports. Requires role authentication.", "operationId": "app.bsky.contact.sendNotification", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "from", "to" ], "properties": { "from": { "type": "string", "description": "The DID of who this notification comes from.", "format": "did" }, "to": { "type": "string", "description": "The DID of who this notification should go to.", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.startPhoneVerification": { "post": { "tags": [ "app.bsky.contact" ], "summary": "Starts a phone verification flow. The phone passed will receive a code via SMS that should be passed to `app.bsky.contact.verifyPhone`. Requires authentication.", "operationId": "app.bsky.contact.startPhoneVerification", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "phone" ], "properties": { "phone": { "type": "string", "description": "The phone number to receive the code via SMS." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RateLimitExceeded" }, { "const": "InvalidDid" }, { "const": "InvalidPhone" }, { "const": "InternalError" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.contact.verifyPhone": { "post": { "tags": [ "app.bsky.contact" ], "summary": "Verifies control over a phone number with a code received via SMS and starts a contact import session. Requires authentication.", "operationId": "app.bsky.contact.verifyPhone", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "phone", "code" ], "properties": { "phone": { "type": "string", "description": "The phone number to verify. Should be the same as the one passed to `app.bsky.contact.startPhoneVerification`." }, "code": { "type": "string", "description": "The code received via SMS as a result of the call to `app.bsky.contact.startPhoneVerification`." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "token" ], "properties": { "token": { "type": "string", "description": "JWT to be used in a call to `app.bsky.contact.importContacts`. It is only valid for a single call." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RateLimitExceeded" }, { "const": "InvalidDid" }, { "const": "InvalidPhone" }, { "const": "InvalidCode" }, { "const": "InternalError" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.describeFeedGenerator": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View).", "operationId": "app.bsky.feed.describeFeedGenerator", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "feeds" ], "properties": { "did": { "type": "string", "format": "did" }, "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.describeFeedGenerator.feed" } }, "links": { "$ref": "#/components/schemas/app.bsky.feed.describeFeedGenerator.links" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getActorFeeds": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).", "operationId": "app.bsky.feed.getActorFeeds", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feeds" ], "properties": { "cursor": { "type": "string" }, "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getActorLikes": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a list of posts liked by an actor. Requires auth, actor must be the requesting account.", "operationId": "app.bsky.feed.getActorLikes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.feedViewPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BlockedActor" }, { "const": "BlockedByActor" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getAuthorFeed": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.", "operationId": "app.bsky.feed.getAuthorFeed", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "filter", "in": "query", "description": "Combinations of post/repost types to include in response.", "required": false, "schema": { "type": "string", "description": "Combinations of post/repost types to include in response.", "default": "posts_with_replies", "enum": [ "posts_with_replies", "posts_no_replies", "posts_with_media", "posts_and_author_threads", "posts_with_video" ] } }, { "name": "includePins", "in": "query", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.feedViewPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BlockedActor" }, { "const": "BlockedByActor" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getFeed": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a hydrated feed from an actor's selected feed generator. Implemented by App View.", "operationId": "app.bsky.feed.getFeed", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "feed", "in": "query", "required": true, "schema": { "type": "string", "format": "at-uri" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.feedViewPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "UnknownFeed" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getFeedGenerator": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get information about a feed generator. Implemented by AppView.", "operationId": "app.bsky.feed.getFeedGenerator", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "feed", "in": "query", "description": "AT-URI of the feed generator record.", "required": true, "schema": { "type": "string", "description": "AT-URI of the feed generator record.", "format": "at-uri" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "view", "isOnline", "isValid" ], "properties": { "view": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" }, "isOnline": { "type": "boolean", "description": "Indicates whether the feed generator service has been online recently, or else seems to be inactive." }, "isValid": { "type": "boolean", "description": "Indicates whether the feed generator service is compatible with the record declaration." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getFeedGenerators": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get information about a list of feed generators.", "operationId": "app.bsky.feed.getFeedGenerators", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "feeds", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "at-uri" } } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feeds" ], "properties": { "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getFeedSkeleton": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.", "operationId": "app.bsky.feed.getFeedSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "feed", "in": "query", "description": "Reference to feed generator record describing the specific feed being requested.", "required": true, "schema": { "type": "string", "description": "Reference to feed generator record describing the specific feed being requested.", "format": "at-uri" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.skeletonFeedPost" } }, "reqId": { "type": "string", "description": "Unique identifier per request that may be passed back alongside interactions.", "maxLength": 100 } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "UnknownFeed" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getLikes": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get like records which reference a subject (by AT-URI and CID).", "operationId": "app.bsky.feed.getLikes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uri", "in": "query", "description": "AT-URI of the subject (eg, a post record).", "required": true, "schema": { "type": "string", "description": "AT-URI of the subject (eg, a post record).", "format": "at-uri" } }, { "name": "cid", "in": "query", "description": "CID of the subject record (aka, specific version of record), to filter likes.", "required": false, "schema": { "type": "string", "description": "CID of the subject record (aka, specific version of record), to filter likes.", "format": "cid" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "likes" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "cursor": { "type": "string" }, "likes": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.getLikes.like" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getListFeed": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.", "operationId": "app.bsky.feed.getListFeed", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "list", "in": "query", "description": "Reference (AT-URI) to the list record.", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) to the list record.", "format": "at-uri" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.feedViewPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "UnknownList" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getPostThread": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.", "operationId": "app.bsky.feed.getPostThread", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uri", "in": "query", "description": "Reference (AT-URI) to post record.", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) to post record.", "format": "at-uri" } }, { "name": "depth", "in": "query", "description": "How many levels of reply depth should be included in response.", "required": false, "schema": { "type": "integer", "minimum": 0, "maximum": 1000, "default": 6 } }, { "name": "parentHeight", "in": "query", "description": "How many levels of parent (and grandparent, etc) post to include.", "required": false, "schema": { "type": "integer", "minimum": 0, "maximum": 1000, "default": 80 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "thread" ], "properties": { "thread": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.threadViewPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.notFoundPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedPost" } ] }, "threadgate": { "$ref": "#/components/schemas/app.bsky.feed.defs.threadgateView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "NotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getPosts": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.", "operationId": "app.bsky.feed.getPosts", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uris", "in": "query", "description": "List of post AT-URIs to return hydrated views for.", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "at-uri" }, "maxItems": 25 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "posts" ], "properties": { "posts": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getQuotes": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a list of quotes for a given post.", "operationId": "app.bsky.feed.getQuotes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uri", "in": "query", "description": "Reference (AT-URI) of post record", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) of post record", "format": "at-uri" } }, { "name": "cid", "in": "query", "description": "If supplied, filters to quotes of specific version (by CID) of the post record.", "required": false, "schema": { "type": "string", "description": "If supplied, filters to quotes of specific version (by CID) of the post record.", "format": "cid" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "posts" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "cursor": { "type": "string" }, "posts": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getRepostedBy": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a list of reposts for a given post.", "operationId": "app.bsky.feed.getRepostedBy", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uri", "in": "query", "description": "Reference (AT-URI) of post record", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) of post record", "format": "at-uri" } }, { "name": "cid", "in": "query", "description": "If supplied, filters to reposts of specific version (by CID) of the post record.", "required": false, "schema": { "type": "string", "description": "If supplied, filters to reposts of specific version (by CID) of the post record.", "format": "cid" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "repostedBy" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "cursor": { "type": "string" }, "repostedBy": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getSuggestedFeeds": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a list of suggested feeds (feed generators) for the requesting account.", "operationId": "app.bsky.feed.getSuggestedFeeds", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feeds" ], "properties": { "cursor": { "type": "string" }, "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.getTimeline": { "get": { "tags": [ "app.bsky.feed" ], "summary": "Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed.", "operationId": "app.bsky.feed.getTimeline", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "algorithm", "in": "query", "description": "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism.", "required": false, "schema": { "type": "string", "description": "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.feedViewPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.searchPosts": { "get": { "tags": [ "app.bsky.feed" ], "summary": "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.", "operationId": "app.bsky.feed.searchPosts", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "q", "in": "query", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", "required": true, "schema": { "type": "string", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended." } }, { "name": "sort", "in": "query", "description": "Specifies the ranking order of results.", "required": false, "schema": { "type": "string", "description": "Specifies the ranking order of results.", "default": "latest", "enum": [ "top", "latest" ] } }, { "name": "since", "in": "query", "description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).", "required": false, "schema": { "type": "string", "description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD)." } }, { "name": "until", "in": "query", "description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).", "required": false, "schema": { "type": "string", "description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD)." } }, { "name": "mentions", "in": "query", "description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.", "required": false, "schema": { "type": "string", "description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.", "format": "at-identifier" } }, { "name": "author", "in": "query", "description": "Filter to posts by the given account. Handles are resolved to DID before query-time.", "required": false, "schema": { "type": "string", "description": "Filter to posts by the given account. Handles are resolved to DID before query-time.", "format": "at-identifier" } }, { "name": "lang", "in": "query", "description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.", "required": false, "schema": { "type": "string", "description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.", "format": "language" } }, { "name": "domain", "in": "query", "description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.", "required": false, "schema": { "type": "string", "description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization." } }, { "name": "url", "in": "query", "description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.", "required": false, "schema": { "type": "string", "description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.", "format": "uri" } }, { "name": "tag", "in": "query", "description": "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.", "required": false, "schema": { "type": "array", "items": { "type": "string", "maxLength": 640 } } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 } }, { "name": "cursor", "in": "query", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", "required": false, "schema": { "type": "string", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "posts" ], "properties": { "cursor": { "type": "string" }, "hitsTotal": { "type": "integer" }, "posts": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BadQueryString" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.feed.sendInteractions": { "post": { "tags": [ "app.bsky.feed" ], "summary": "Send information about interactions with feed items back to the feed generator that served them.", "operationId": "app.bsky.feed.sendInteractions", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "interactions" ], "properties": { "interactions": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.interaction" } } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getActorStarterPacks": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Get a list of starter packs created by the actor.", "operationId": "app.bsky.graph.getActorStarterPacks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "cursor": { "type": "string" }, "starterPacks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackViewBasic" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getBlocks": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates which accounts the requesting account is currently blocking. Requires auth.", "operationId": "app.bsky.graph.getBlocks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "blocks" ], "properties": { "cursor": { "type": "string" }, "blocks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getFollowers": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates accounts which follow a specified account (actor).", "operationId": "app.bsky.graph.getFollowers", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subject", "followers" ], "properties": { "subject": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "cursor": { "type": "string" }, "followers": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getFollows": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates accounts which a specified account (actor) follows.", "operationId": "app.bsky.graph.getFollows", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subject", "follows" ], "properties": { "subject": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "cursor": { "type": "string" }, "follows": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getKnownFollowers": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates accounts which follow a specified account (actor) and are followed by the viewer.", "operationId": "app.bsky.graph.getKnownFollowers", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subject", "followers" ], "properties": { "subject": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "cursor": { "type": "string" }, "followers": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getList": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Gets a 'view' (with additional context) of a specified list.", "operationId": "app.bsky.graph.getList", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "list", "in": "query", "description": "Reference (AT-URI) of the list record to hydrate.", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) of the list record to hydrate.", "format": "at-uri" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "list", "items" ], "properties": { "cursor": { "type": "string" }, "list": { "$ref": "#/components/schemas/app.bsky.graph.defs.listView" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.listItemView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getListBlocks": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Get mod lists that the requesting account (actor) is blocking. Requires auth.", "operationId": "app.bsky.graph.getListBlocks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "lists" ], "properties": { "cursor": { "type": "string" }, "lists": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.listView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getListMutes": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth.", "operationId": "app.bsky.graph.getListMutes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "lists" ], "properties": { "cursor": { "type": "string" }, "lists": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.listView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getLists": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates the lists created by a specified account (actor).", "operationId": "app.bsky.graph.getLists", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "description": "The account (actor) to enumerate lists from.", "required": true, "schema": { "type": "string", "description": "The account (actor) to enumerate lists from.", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "purposes", "in": "query", "description": "Optional filter by list purpose. If not specified, all supported types are returned.", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "modlist", "curatelist" ] } } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "lists" ], "properties": { "cursor": { "type": "string" }, "lists": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.listView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getListsWithMembership": { "get": { "tags": [ "app.bsky.graph" ], "summary": "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.", "operationId": "app.bsky.graph.getListsWithMembership", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "description": "The account (actor) to check for membership.", "required": true, "schema": { "type": "string", "description": "The account (actor) to check for membership.", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "purposes", "in": "query", "description": "Optional filter by list purpose. If not specified, all supported types are returned.", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "modlist", "curatelist" ] } } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "listsWithMembership" ], "properties": { "cursor": { "type": "string" }, "listsWithMembership": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.getListsWithMembership.listWithMembership" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getMutes": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates accounts that the requesting account (actor) currently has muted. Requires auth.", "operationId": "app.bsky.graph.getMutes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "mutes" ], "properties": { "cursor": { "type": "string" }, "mutes": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getRelationships": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates public relationships between one account, and a list of other accounts. Does not require auth.", "operationId": "app.bsky.graph.getRelationships", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "description": "Primary account requesting relationships for.", "required": true, "schema": { "type": "string", "description": "Primary account requesting relationships for.", "format": "at-identifier" } }, { "name": "others", "in": "query", "description": "List of 'other' accounts to be related back to the primary.", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "at-identifier" }, "maxItems": 30 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "relationships" ], "properties": { "actor": { "type": "string", "format": "did" }, "relationships": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.graph.defs.relationship" }, { "$ref": "#/components/schemas/app.bsky.graph.defs.notFoundActor" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "ActorNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getStarterPack": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Gets a view of a starter pack.", "operationId": "app.bsky.graph.getStarterPack", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "starterPack", "in": "query", "description": "Reference (AT-URI) of the starter pack record.", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) of the starter pack record.", "format": "at-uri" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPack" ], "properties": { "starterPack": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getStarterPacks": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Get views for a list of starter packs.", "operationId": "app.bsky.graph.getStarterPacks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uris", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "at-uri" }, "maxItems": 25 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "starterPacks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackViewBasic" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getStarterPacksWithMembership": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth.", "operationId": "app.bsky.graph.getStarterPacksWithMembership", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "description": "The account (actor) to check for membership.", "required": true, "schema": { "type": "string", "description": "The account (actor) to check for membership.", "format": "at-identifier" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacksWithMembership" ], "properties": { "cursor": { "type": "string" }, "starterPacksWithMembership": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.getStarterPacksWithMembership.starterPackWithMembership" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.getSuggestedFollowsByActor": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account.", "operationId": "app.bsky.graph.getSuggestedFollowsByActor", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "at-identifier" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "suggestions" ], "properties": { "suggestions": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } }, "isFallback": { "type": "boolean", "description": "If true, response has fallen-back to generic results, and is not scoped using relativeToDid" }, "recId": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.muteActor": { "post": { "tags": [ "app.bsky.graph" ], "summary": "Creates a mute relationship for the specified account. Mutes are private in Bluesky. Requires auth.", "operationId": "app.bsky.graph.muteActor", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "actor" ], "properties": { "actor": { "type": "string", "format": "at-identifier" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.muteActorList": { "post": { "tags": [ "app.bsky.graph" ], "summary": "Creates a mute relationship for the specified list of accounts. Mutes are private in Bluesky. Requires auth.", "operationId": "app.bsky.graph.muteActorList", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "list" ], "properties": { "list": { "type": "string", "format": "at-uri" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.muteThread": { "post": { "tags": [ "app.bsky.graph" ], "summary": "Mutes a thread preventing notifications from the thread and any of its children. Mutes are private in Bluesky. Requires auth.", "operationId": "app.bsky.graph.muteThread", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "root" ], "properties": { "root": { "type": "string", "format": "at-uri" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.searchStarterPacks": { "get": { "tags": [ "app.bsky.graph" ], "summary": "Find starter packs matching search criteria. Does not require auth.", "operationId": "app.bsky.graph.searchStarterPacks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "q", "in": "query", "description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", "required": true, "schema": { "type": "string", "description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "cursor": { "type": "string" }, "starterPacks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackViewBasic" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.unmuteActor": { "post": { "tags": [ "app.bsky.graph" ], "summary": "Unmutes the specified account. Requires auth.", "operationId": "app.bsky.graph.unmuteActor", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "actor" ], "properties": { "actor": { "type": "string", "format": "at-identifier" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.unmuteActorList": { "post": { "tags": [ "app.bsky.graph" ], "summary": "Unmutes the specified list of accounts. Requires auth.", "operationId": "app.bsky.graph.unmuteActorList", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "list" ], "properties": { "list": { "type": "string", "format": "at-uri" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.graph.unmuteThread": { "post": { "tags": [ "app.bsky.graph" ], "summary": "Unmutes the specified thread. Requires auth.", "operationId": "app.bsky.graph.unmuteThread", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "root" ], "properties": { "root": { "type": "string", "format": "at-uri" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.labeler.getServices": { "get": { "tags": [ "app.bsky.labeler" ], "summary": "Get information about a list of labeler services.", "operationId": "app.bsky.labeler.getServices", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "dids", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "did" } } }, { "name": "detailed", "in": "query", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "views" ], "properties": { "views": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.labeler.defs.labelerView" }, { "$ref": "#/components/schemas/app.bsky.labeler.defs.labelerViewDetailed" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.getPreferences": { "get": { "tags": [ "app.bsky.notification" ], "summary": "Get notification-related preferences for an account. Requires auth.", "operationId": "app.bsky.notification.getPreferences", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "preferences" ], "properties": { "preferences": { "$ref": "#/components/schemas/app.bsky.notification.defs.preferences" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.getUnreadCount": { "get": { "tags": [ "app.bsky.notification" ], "summary": "Count the number of unread notifications for the requesting account. Requires auth.", "operationId": "app.bsky.notification.getUnreadCount", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "priority", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "seenAt", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.listActivitySubscriptions": { "get": { "tags": [ "app.bsky.notification" ], "summary": "Enumerate all accounts to which the requesting account is subscribed to receive notifications for. Requires auth.", "operationId": "app.bsky.notification.listActivitySubscriptions", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subscriptions" ], "properties": { "cursor": { "type": "string" }, "subscriptions": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.listNotifications": { "get": { "tags": [ "app.bsky.notification" ], "summary": "Enumerate notifications for the requesting account. Requires auth.", "operationId": "app.bsky.notification.listNotifications", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "reasons", "in": "query", "description": "Notification reasons to include in response.", "required": false, "schema": { "type": "array", "items": { "type": "string", "description": "A reason that matches the reason property of #notification." } } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "priority", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "seenAt", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "notifications" ], "properties": { "cursor": { "type": "string" }, "notifications": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.notification.listNotifications.notification" } }, "priority": { "type": "boolean" }, "seenAt": { "type": "string", "format": "date-time" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.putActivitySubscription": { "post": { "tags": [ "app.bsky.notification" ], "summary": "Puts an activity subscription entry. The key should be omitted for creation and provided for updates. Requires auth.", "operationId": "app.bsky.notification.putActivitySubscription", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "subject", "activitySubscription" ], "properties": { "subject": { "type": "string", "format": "did" }, "activitySubscription": { "$ref": "#/components/schemas/app.bsky.notification.defs.activitySubscription" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subject" ], "properties": { "subject": { "type": "string", "format": "did" }, "activitySubscription": { "$ref": "#/components/schemas/app.bsky.notification.defs.activitySubscription" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.putPreferences": { "post": { "tags": [ "app.bsky.notification" ], "summary": "Set notification-related preferences for an account. Requires auth.", "operationId": "app.bsky.notification.putPreferences", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "priority" ], "properties": { "priority": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.putPreferencesV2": { "post": { "tags": [ "app.bsky.notification" ], "summary": "Set notification-related preferences for an account. Requires auth.", "operationId": "app.bsky.notification.putPreferencesV2", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "chat": { "$ref": "#/components/schemas/app.bsky.notification.defs.chatPreference" }, "follow": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "like": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "likeViaRepost": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "mention": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "quote": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "reply": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "repost": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "repostViaRepost": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "starterpackJoined": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" }, "subscribedPost": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" }, "unverified": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" }, "verified": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "preferences" ], "properties": { "preferences": { "$ref": "#/components/schemas/app.bsky.notification.defs.preferences" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.registerPush": { "post": { "tags": [ "app.bsky.notification" ], "summary": "Register to receive push notifications, via a specified service, for the requesting account. Requires auth.", "operationId": "app.bsky.notification.registerPush", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "serviceDid", "token", "platform", "appId" ], "properties": { "serviceDid": { "type": "string", "format": "did" }, "token": { "type": "string" }, "platform": { "type": "string", "enum": [ "ios", "android", "web" ] }, "appId": { "type": "string" }, "ageRestricted": { "type": "boolean", "description": "Set to true when the actor is age restricted" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.unregisterPush": { "post": { "tags": [ "app.bsky.notification" ], "summary": "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.", "operationId": "app.bsky.notification.unregisterPush", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "serviceDid", "token", "platform", "appId" ], "properties": { "serviceDid": { "type": "string", "format": "did" }, "token": { "type": "string" }, "platform": { "type": "string", "enum": [ "ios", "android", "web" ] }, "appId": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.notification.updateSeen": { "post": { "tags": [ "app.bsky.notification" ], "summary": "Notify server that the requesting account has seen notifications. Requires auth.", "operationId": "app.bsky.notification.updateSeen", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "seenAt" ], "properties": { "seenAt": { "type": "string", "format": "date-time" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.applyLabels": { "post": { "tags": [ "app.bsky.unspecced" ], "summary": "Allow a labeler to apply labels directly.", "operationId": "app.bsky.unspecced.applyLabels", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "labels" ], "properties": { "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.checkHandleAvailability": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "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.", "operationId": "app.bsky.unspecced.checkHandleAvailability", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "handle", "in": "query", "description": "Tentative handle. Will be checked for availability or used to build handle suggestions.", "required": true, "schema": { "type": "string", "description": "Tentative handle. Will be checked for availability or used to build handle suggestions.", "format": "handle" } }, { "name": "email", "in": "query", "description": "User-provided email. Might be used to build handle suggestions.", "required": false, "schema": { "type": "string", "description": "User-provided email. Might be used to build handle suggestions." } }, { "name": "birthDate", "in": "query", "description": "User-provided birth date. Might be used to build handle suggestions.", "required": false, "schema": { "type": "string", "description": "User-provided birth date. Might be used to build handle suggestions.", "format": "date-time" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "handle", "result" ], "properties": { "handle": { "type": "string", "description": "Echo of the input handle.", "format": "handle" }, "result": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.unspecced.checkHandleAvailability.resultAvailable" }, { "$ref": "#/components/schemas/app.bsky.unspecced.checkHandleAvailability.resultUnavailable" } ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidEmail" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getAgeAssuranceState": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "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.", "operationId": "app.bsky.unspecced.getAgeAssuranceState", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.ageAssuranceState" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getConfig": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get miscellaneous runtime configuration.", "operationId": "app.bsky.unspecced.getConfig", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [], "properties": { "checkEmailConfirmed": { "type": "boolean" }, "liveNow": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.getConfig.liveNowConfig" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getOnboardingSuggestedStarterPacks": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a list of suggested starterpacks for onboarding", "operationId": "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "starterPacks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a skeleton of suggested starterpacks for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getOnboardingSuggestedStarterPacks", "operationId": "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "starterPacks": { "type": "array", "items": { "type": "string", "format": "at-uri" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getPopular": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "DEPRECATED: will be removed soon. Use a feed generator alternative.", "operationId": "app.bsky.unspecced.getPopular", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "includeNsfw", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.feedViewPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getPopularFeedGenerators": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "An unspecced view of globally popular feed generators.", "operationId": "app.bsky.unspecced.getPopularFeedGenerators", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "query", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feeds" ], "properties": { "cursor": { "type": "string" }, "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getPostThreadHiddenV2": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "(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 the hidden posts in a thread. It is based in an anchor post at any depth of the tree, and returns hidden replies (recursive replies, with branching to their replies) below the anchor. It does not include ancestors nor the anchor. 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.", "operationId": "app.bsky.unspecced.getPostThreadHiddenV2", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "anchor", "in": "query", "description": "Reference (AT-URI) to post record. This is the anchor post.", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) to post record. This is the anchor post.", "format": "at-uri" } }, { "name": "prioritizeFollowedUsers", "in": "query", "description": "Whether to prioritize posts from followed users. It only has effect when the user is authenticated.", "required": false, "schema": { "type": "boolean", "description": "Whether to prioritize posts from followed users. It only has effect when the user is authenticated." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "thread" ], "properties": { "thread": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.getPostThreadHiddenV2.threadHiddenItem" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getPostThreadOtherV2": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "(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.", "operationId": "app.bsky.unspecced.getPostThreadOtherV2", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "anchor", "in": "query", "description": "Reference (AT-URI) to post record. This is the anchor post.", "required": true, "schema": { "type": "string", "description": "Reference (AT-URI) to post record. This is the anchor post.", "format": "at-uri" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "thread" ], "properties": { "thread": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.getPostThreadOtherV2.threadItem" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getPostThreadV2": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "(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.", "operationId": "app.bsky.unspecced.getPostThreadV2", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "anchor", "in": "query", "description": "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.", "required": true, "schema": { "type": "string", "description": "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.", "format": "at-uri" } }, { "name": "above", "in": "query", "description": "Whether to include parents above the anchor.", "required": false, "schema": { "type": "boolean", "description": "Whether to include parents above the anchor.", "default": true } }, { "name": "below", "in": "query", "description": "How many levels of replies to include below the anchor.", "required": false, "schema": { "type": "integer", "minimum": 0, "maximum": 20, "default": 6 } }, { "name": "branchingFactor", "in": "query", "description": "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).", "required": false, "schema": { "type": "integer", "minimum": 0, "maximum": 100, "default": 10 } }, { "name": "sort", "in": "query", "description": "Sorting for the thread replies.", "required": false, "schema": { "type": "string", "description": "Sorting for the thread replies.", "default": "oldest", "enum": [ "newest", "oldest", "top" ] } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "thread", "hasOtherReplies" ], "properties": { "thread": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.getPostThreadV2.threadItem" } }, "threadgate": { "$ref": "#/components/schemas/app.bsky.feed.defs.threadgateView" }, "hasOtherReplies": { "type": "boolean", "description": "Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getSuggestedFeeds": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a list of suggested feeds", "operationId": "app.bsky.unspecced.getSuggestedFeeds", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feeds" ], "properties": { "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getSuggestedFeedsSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds", "operationId": "app.bsky.unspecced.getSuggestedFeedsSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feeds" ], "properties": { "feeds": { "type": "array", "items": { "type": "string", "format": "at-uri" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getSuggestedStarterPacks": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a list of suggested starterpacks", "operationId": "app.bsky.unspecced.getSuggestedStarterPacks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "starterPacks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getSuggestedStarterPacksSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks", "operationId": "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "starterPacks": { "type": "array", "items": { "type": "string", "format": "at-uri" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getSuggestedUsers": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a list of suggested users", "operationId": "app.bsky.unspecced.getSuggestedUsers", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "category", "in": "query", "description": "Category of users to get suggestions for.", "required": false, "schema": { "type": "string", "description": "Category of users to get suggestions for." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 50, "default": 25 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actors" ], "properties": { "actors": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getSuggestedUsersSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers", "operationId": "app.bsky.unspecced.getSuggestedUsersSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "format": "did" } }, { "name": "category", "in": "query", "description": "Category of users to get suggestions for.", "required": false, "schema": { "type": "string", "description": "Category of users to get suggestions for." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 50, "default": 25 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "dids" ], "properties": { "dids": { "type": "array", "items": { "type": "string", "format": "did" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getSuggestionsSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions", "operationId": "app.bsky.unspecced.getSuggestionsSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "relativeToDid", "in": "query", "description": "DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.", "required": false, "schema": { "type": "string", "description": "DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actors" ], "properties": { "cursor": { "type": "string" }, "actors": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.skeletonSearchActor" } }, "relativeToDid": { "type": "string", "description": "DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer.", "format": "did" }, "recId": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getTaggedSuggestions": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a list of suggestions (feeds and users) tagged with categories", "operationId": "app.bsky.unspecced.getTaggedSuggestions", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "suggestions" ], "properties": { "suggestions": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.getTaggedSuggestions.suggestion" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getTimelineSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "DEPRECATED: a skeleton of a timeline. Unspecced and will be unavailable soon.", "operationId": "app.bsky.unspecced.getTimelineSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "feed" ], "properties": { "cursor": { "type": "string" }, "feed": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.skeletonFeedPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "UnknownFeed" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getTrendingTopics": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get a list of trending topics", "operationId": "app.bsky.unspecced.getTrendingTopics", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "topics", "suggested" ], "properties": { "topics": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.trendingTopic" } }, "suggested": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.trendingTopic" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getTrends": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get the current trends on the network", "operationId": "app.bsky.unspecced.getTrends", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "trends" ], "properties": { "trends": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.trendView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.getTrendsSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends", "operationId": "app.bsky.unspecced.getTrendsSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "trends" ], "properties": { "trends": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.skeletonTrend" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.initAgeAssurance": { "post": { "tags": [ "app.bsky.unspecced" ], "summary": "Initiate age assurance for an account. This is a one-time action that will start the process of verifying the user's age.", "operationId": "app.bsky.unspecced.initAgeAssurance", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "email", "language", "countryCode" ], "properties": { "email": { "type": "string", "description": "The user's email address to receive assurance instructions." }, "language": { "type": "string", "description": "The user's preferred language for communication during the assurance process." }, "countryCode": { "type": "string", "description": "An ISO 3166-1 alpha-2 code of the user's location." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.ageAssuranceState" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidEmail" }, { "const": "DidTooLong" }, { "const": "InvalidInitiation" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.searchActorsSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Backend Actors (profile) search, returns only skeleton.", "operationId": "app.bsky.unspecced.searchActorsSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "q", "in": "query", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax.", "required": true, "schema": { "type": "string", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax." } }, { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", "format": "did" } }, { "name": "typeahead", "in": "query", "description": "If true, acts as fast/simple 'typeahead' query.", "required": false, "schema": { "type": "boolean", "description": "If true, acts as fast/simple 'typeahead' query." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 } }, { "name": "cursor", "in": "query", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", "required": false, "schema": { "type": "string", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actors" ], "properties": { "cursor": { "type": "string" }, "hitsTotal": { "type": "integer" }, "actors": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.skeletonSearchActor" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BadQueryString" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.searchPostsSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Backend Posts search, returns only skeleton", "operationId": "app.bsky.unspecced.searchPostsSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "q", "in": "query", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", "required": true, "schema": { "type": "string", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended." } }, { "name": "sort", "in": "query", "description": "Specifies the ranking order of results.", "required": false, "schema": { "type": "string", "description": "Specifies the ranking order of results.", "default": "latest", "enum": [ "top", "latest" ] } }, { "name": "since", "in": "query", "description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).", "required": false, "schema": { "type": "string", "description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD)." } }, { "name": "until", "in": "query", "description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).", "required": false, "schema": { "type": "string", "description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD)." } }, { "name": "mentions", "in": "query", "description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.", "required": false, "schema": { "type": "string", "description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.", "format": "at-identifier" } }, { "name": "author", "in": "query", "description": "Filter to posts by the given account. Handles are resolved to DID before query-time.", "required": false, "schema": { "type": "string", "description": "Filter to posts by the given account. Handles are resolved to DID before query-time.", "format": "at-identifier" } }, { "name": "lang", "in": "query", "description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.", "required": false, "schema": { "type": "string", "description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.", "format": "language" } }, { "name": "domain", "in": "query", "description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.", "required": false, "schema": { "type": "string", "description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization." } }, { "name": "url", "in": "query", "description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.", "required": false, "schema": { "type": "string", "description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.", "format": "uri" } }, { "name": "tag", "in": "query", "description": "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.", "required": false, "schema": { "type": "array", "items": { "type": "string", "maxLength": 640 } } }, { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 } }, { "name": "cursor", "in": "query", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", "required": false, "schema": { "type": "string", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "posts" ], "properties": { "cursor": { "type": "string" }, "hitsTotal": { "type": "integer" }, "posts": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.skeletonSearchPost" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BadQueryString" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.unspecced.searchStarterPacksSkeleton": { "get": { "tags": [ "app.bsky.unspecced" ], "summary": "Backend Starter Pack search, returns only skeleton.", "operationId": "app.bsky.unspecced.searchStarterPacksSkeleton", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "q", "in": "query", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", "required": true, "schema": { "type": "string", "description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended." } }, { "name": "viewer", "in": "query", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "required": false, "schema": { "type": "string", "description": "DID of the account making the request (not included for public/unauthenticated queries).", "format": "did" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 } }, { "name": "cursor", "in": "query", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", "required": false, "schema": { "type": "string", "description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "starterPacks" ], "properties": { "cursor": { "type": "string" }, "hitsTotal": { "type": "integer" }, "starterPacks": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.defs.skeletonSearchStarterPack" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BadQueryString" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.video.getJobStatus": { "get": { "tags": [ "app.bsky.video" ], "summary": "Get status details for a video processing job.", "operationId": "app.bsky.video.getJobStatus", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "jobId", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "jobStatus" ], "properties": { "jobStatus": { "$ref": "#/components/schemas/app.bsky.video.defs.jobStatus" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.video.getUploadLimits": { "get": { "tags": [ "app.bsky.video" ], "summary": "Get video upload limits for the authenticated user.", "operationId": "app.bsky.video.getUploadLimits", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "canUpload" ], "properties": { "canUpload": { "type": "boolean" }, "remainingDailyVideos": { "type": "integer" }, "remainingDailyBytes": { "type": "integer" }, "message": { "type": "string" }, "error": { "type": "string" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/app.bsky.video.uploadVideo": { "post": { "tags": [ "app.bsky.video" ], "summary": "Upload a video to be processed then stored on the PDS.", "operationId": "app.bsky.video.uploadVideo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "video/mp4": {} } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "jobStatus" ], "properties": { "jobStatus": { "$ref": "#/components/schemas/app.bsky.video.defs.jobStatus" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.actor.deleteAccount": { "post": { "tags": [ "chat.bsky.actor" ], "operationId": "chat.bsky.actor.deleteAccount", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.actor.exportAccountData": { "get": { "tags": [ "chat.bsky.actor" ], "operationId": "chat.bsky.actor.exportAccountData", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/jsonl": {} } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.acceptConvo": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.acceptConvo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId" ], "properties": { "convoId": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "rev": { "type": "string", "description": "Rev when the convo was accepted. If not present, the convo was already accepted." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.addReaction": { "post": { "tags": [ "chat.bsky.convo" ], "summary": "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.", "operationId": "chat.bsky.convo.addReaction", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId", "messageId", "value" ], "properties": { "convoId": { "type": "string" }, "messageId": { "type": "string" }, "value": { "type": "string", "minLength": 1, "maxLength": 64 } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "message" ], "properties": { "message": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "ReactionMessageDeleted" }, { "const": "ReactionLimitReached" }, { "const": "ReactionInvalidValue" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.deleteMessageForSelf": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.deleteMessageForSelf", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId", "messageId" ], "properties": { "convoId": { "type": "string" }, "messageId": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.getConvo": { "get": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.getConvo", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "convoId", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "convo" ], "properties": { "convo": { "$ref": "#/components/schemas/chat.bsky.convo.defs.convoView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.getConvoAvailability": { "get": { "tags": [ "chat.bsky.convo" ], "summary": "Get whether the requester and the other members can chat. If an existing convo is found for these members, it is returned.", "operationId": "chat.bsky.convo.getConvoAvailability", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "members", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "canChat" ], "properties": { "canChat": { "type": "boolean" }, "convo": { "$ref": "#/components/schemas/chat.bsky.convo.defs.convoView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.getConvoForMembers": { "get": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.getConvoForMembers", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "members", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 10 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "convo" ], "properties": { "convo": { "$ref": "#/components/schemas/chat.bsky.convo.defs.convoView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.getLog": { "get": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.getLog", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "logs" ], "properties": { "cursor": { "type": "string" }, "logs": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.logBeginConvo" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logAcceptConvo" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logLeaveConvo" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logMuteConvo" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logUnmuteConvo" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logCreateMessage" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logDeleteMessage" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logReadMessage" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logAddReaction" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.logRemoveReaction" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.getMessages": { "get": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.getMessages", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "convoId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "messages" ], "properties": { "cursor": { "type": "string" }, "messages": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.leaveConvo": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.leaveConvo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId" ], "properties": { "convoId": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId", "rev" ], "properties": { "convoId": { "type": "string" }, "rev": { "type": "string" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.listConvos": { "get": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.listConvos", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "readState", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "unread" ] } }, { "name": "status", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "request", "accepted" ] } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "convos" ], "properties": { "cursor": { "type": "string" }, "convos": { "type": "array", "items": { "$ref": "#/components/schemas/chat.bsky.convo.defs.convoView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.muteConvo": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.muteConvo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId" ], "properties": { "convoId": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "convo" ], "properties": { "convo": { "$ref": "#/components/schemas/chat.bsky.convo.defs.convoView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.removeReaction": { "post": { "tags": [ "chat.bsky.convo" ], "summary": "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.", "operationId": "chat.bsky.convo.removeReaction", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId", "messageId", "value" ], "properties": { "convoId": { "type": "string" }, "messageId": { "type": "string" }, "value": { "type": "string", "minLength": 1, "maxLength": 64 } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "message" ], "properties": { "message": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "ReactionMessageDeleted" }, { "const": "ReactionInvalidValue" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.sendMessage": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.sendMessage", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId", "message" ], "properties": { "convoId": { "type": "string" }, "message": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageInput" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.sendMessageBatch": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.sendMessageBatch", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/chat.bsky.convo.sendMessageBatch.batchItem" }, "maxItems": 100 } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.unmuteConvo": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.unmuteConvo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId" ], "properties": { "convoId": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "convo" ], "properties": { "convo": { "$ref": "#/components/schemas/chat.bsky.convo.defs.convoView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.updateAllRead": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.updateAllRead", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "request", "accepted" ] } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "updatedCount" ], "properties": { "updatedCount": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.convo.updateRead": { "post": { "tags": [ "chat.bsky.convo" ], "operationId": "chat.bsky.convo.updateRead", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "convoId" ], "properties": { "convoId": { "type": "string" }, "messageId": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "convo" ], "properties": { "convo": { "$ref": "#/components/schemas/chat.bsky.convo.defs.convoView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.moderation.getActorMetadata": { "get": { "tags": [ "chat.bsky.moderation" ], "operationId": "chat.bsky.moderation.getActorMetadata", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "actor", "in": "query", "required": true, "schema": { "type": "string", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "day", "month", "all" ], "properties": { "day": { "$ref": "#/components/schemas/chat.bsky.moderation.getActorMetadata.metadata" }, "month": { "$ref": "#/components/schemas/chat.bsky.moderation.getActorMetadata.metadata" }, "all": { "$ref": "#/components/schemas/chat.bsky.moderation.getActorMetadata.metadata" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.moderation.getMessageContext": { "get": { "tags": [ "chat.bsky.moderation" ], "operationId": "chat.bsky.moderation.getMessageContext", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "convoId", "in": "query", "description": "Conversation that the message is from. NOTE: this field will eventually be required.", "required": false, "schema": { "type": "string", "description": "Conversation that the message is from. NOTE: this field will eventually be required." } }, { "name": "messageId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "before", "in": "query", "required": false, "schema": { "type": "integer", "default": 5 } }, { "name": "after", "in": "query", "required": false, "schema": { "type": "integer", "default": 5 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "messages" ], "properties": { "messages": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/chat.bsky.moderation.updateActorAccess": { "post": { "tags": [ "chat.bsky.moderation" ], "operationId": "chat.bsky.moderation.updateActorAccess", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "actor", "allowAccess" ], "properties": { "actor": { "type": "string", "format": "did" }, "allowAccess": { "type": "boolean" }, "ref": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.createCommunicationTemplate": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Administrative action to create a new, re-usable communication (email for now) template.", "operationId": "com.atproto.admin.createCommunicationTemplate", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "subject", "contentMarkdown", "name" ], "properties": { "name": { "type": "string", "description": "Name of the template." }, "contentMarkdown": { "type": "string", "description": "Content of the template, markdown supported, can contain variable placeholders." }, "subject": { "type": "string", "description": "Subject of the message, used in emails." }, "createdBy": { "type": "string", "description": "DID of the user who is creating the template.", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.communicationTemplateView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.deleteAccount": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Delete a user account as an administrator.", "operationId": "com.atproto.admin.deleteAccount", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.deleteCommunicationTemplate": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Delete a communication template.", "operationId": "com.atproto.admin.deleteCommunicationTemplate", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.disableAccountInvites": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Disable an account from receiving new invite codes, but does not invalidate existing codes.", "operationId": "com.atproto.admin.disableAccountInvites", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "account" ], "properties": { "account": { "type": "string", "format": "did" }, "note": { "type": "string", "description": "Optional reason for disabled invites." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.disableInviteCodes": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Disable some set of codes and/or all codes associated with a set of users.", "operationId": "com.atproto.admin.disableInviteCodes", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "codes": { "type": "array", "items": { "type": "string" } }, "accounts": { "type": "array", "items": { "type": "string" } } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.emitModerationEvent": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Take a moderation action on an actor.", "operationId": "com.atproto.admin.emitModerationEvent", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "event", "subject", "createdBy" ], "properties": { "event": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventTakedown" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventAcknowledge" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventEscalate" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventComment" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventLabel" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventReport" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventMute" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventReverseTakedown" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventUnmute" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventEmail" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventTag" } ] }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } ] }, "subjectBlobCids": { "type": "array", "items": { "type": "string", "format": "cid" } }, "createdBy": { "type": "string", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "SubjectHasAction" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.enableAccountInvites": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Re-enable an account's ability to receive invite codes.", "operationId": "com.atproto.admin.enableAccountInvites", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "account" ], "properties": { "account": { "type": "string", "format": "did" }, "note": { "type": "string", "description": "Optional reason for enabled invites." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getAccountInfo": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get details about an account.", "operationId": "com.atproto.admin.getAccountInfo", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "required": true, "schema": { "type": "string", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.accountView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getAccountInfos": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get details about some accounts.", "operationId": "com.atproto.admin.getAccountInfos", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "dids", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "did" } } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "infos" ], "properties": { "infos": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.accountView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getInviteCodes": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get an admin view of invite codes.", "operationId": "com.atproto.admin.getInviteCodes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "sort", "in": "query", "required": false, "schema": { "type": "string", "default": "recent", "enum": [ "recent", "usage" ] } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 500, "default": 100 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "codes" ], "properties": { "cursor": { "type": "string" }, "codes": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCode" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getModerationAction": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get details about a moderation action.", "operationId": "com.atproto.admin.getModerationAction", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.actionViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getModerationActions": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get a list of moderation actions related to a subject.", "operationId": "com.atproto.admin.getModerationActions", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "subject", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actions" ], "properties": { "cursor": { "type": "string" }, "actions": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.actionView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getModerationEvent": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get details about a moderation event.", "operationId": "com.atproto.admin.getModerationEvent", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getModerationReport": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get details about a moderation report.", "operationId": "com.atproto.admin.getModerationReport", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.reportViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getModerationReports": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get moderation reports related to a subject.", "operationId": "com.atproto.admin.getModerationReports", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "subject", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "ignoreSubjects", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "actionedBy", "in": "query", "description": "Get all reports that were actioned by a specific moderator.", "required": false, "schema": { "type": "string", "description": "Get all reports that were actioned by a specific moderator.", "format": "did" } }, { "name": "reporters", "in": "query", "description": "Filter reports made by one or more DIDs.", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "resolved", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "actionType", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "com.atproto.admin.defs#takedown", "com.atproto.admin.defs#flag", "com.atproto.admin.defs#acknowledge", "com.atproto.admin.defs#escalate" ] } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "reverse", "in": "query", "description": "Reverse the order of the returned records. When true, returns reports in chronological order.", "required": false, "schema": { "type": "boolean", "description": "Reverse the order of the returned records. When true, returns reports in chronological order." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "reports" ], "properties": { "cursor": { "type": "string" }, "reports": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.reportView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getRecord": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get details about a record.", "operationId": "com.atproto.admin.getRecord", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uri", "in": "query", "required": true, "schema": { "type": "string", "format": "at-uri" } }, { "name": "cid", "in": "query", "required": false, "schema": { "type": "string", "format": "cid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.recordViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RecordNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getRepo": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get details about a repository.", "operationId": "com.atproto.admin.getRepo", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "required": true, "schema": { "type": "string", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.repoViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RepoNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.getSubjectStatus": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get the service-specific admin status of a subject (account, record, or blob).", "operationId": "com.atproto.admin.getSubjectStatus", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "required": false, "schema": { "type": "string", "format": "did" } }, { "name": "uri", "in": "query", "required": false, "schema": { "type": "string", "format": "at-uri" } }, { "name": "blob", "in": "query", "required": false, "schema": { "type": "string", "format": "cid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subject" ], "properties": { "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.repoBlobRef" } ] }, "takedown": { "$ref": "#/components/schemas/com.atproto.admin.defs.statusAttr" }, "deactivated": { "$ref": "#/components/schemas/com.atproto.admin.defs.statusAttr" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.listCommunicationTemplates": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get list of all communication templates.", "operationId": "com.atproto.admin.listCommunicationTemplates", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "communicationTemplates" ], "properties": { "communicationTemplates": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.communicationTemplateView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.queryModerationEvents": { "get": { "tags": [ "com.atproto.admin" ], "summary": "List moderation events related to a subject.", "operationId": "com.atproto.admin.queryModerationEvents", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "types", "in": "query", "description": "The types of events (fully qualified string in the format of com.atproto.admin#modEvent) to filter by. If not specified, all events are returned.", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "createdBy", "in": "query", "required": false, "schema": { "type": "string", "format": "did" } }, { "name": "sortDirection", "in": "query", "description": "Sort direction for the events. Defaults to descending order of created at timestamp.", "required": false, "schema": { "type": "string", "description": "Sort direction for the events. Defaults to descending order of created at timestamp.", "default": "desc" } }, { "name": "createdAfter", "in": "query", "description": "Retrieve events created after a given timestamp", "required": false, "schema": { "type": "string", "description": "Retrieve events created after a given timestamp", "format": "date-time" } }, { "name": "createdBefore", "in": "query", "description": "Retrieve events created before a given timestamp", "required": false, "schema": { "type": "string", "description": "Retrieve events created before a given timestamp", "format": "date-time" } }, { "name": "subject", "in": "query", "required": false, "schema": { "type": "string", "format": "uri" } }, { "name": "includeAllUserRecords", "in": "query", "description": "If true, events on all record types (posts, lists, profile etc.) owned by the did are returned", "required": false, "schema": { "type": "boolean", "description": "If true, events on all record types (posts, lists, profile etc.) owned by the did are returned" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "hasComment", "in": "query", "description": "If true, only events with comments are returned", "required": false, "schema": { "type": "boolean", "description": "If true, only events with comments are returned" } }, { "name": "comment", "in": "query", "description": "If specified, only events with comments containing the keyword are returned", "required": false, "schema": { "type": "string", "description": "If specified, only events with comments containing the keyword are returned" } }, { "name": "addedLabels", "in": "query", "description": "If specified, only events where all of these labels were added are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "removedLabels", "in": "query", "description": "If specified, only events where all of these labels were removed are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "addedTags", "in": "query", "description": "If specified, only events where all of these tags were added are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "removedTags", "in": "query", "description": "If specified, only events where all of these tags were removed are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "reportTypes", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "events" ], "properties": { "cursor": { "type": "string" }, "events": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.modEventView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.queryModerationStatuses": { "get": { "tags": [ "com.atproto.admin" ], "summary": "View moderation statuses of subjects (record or repo).", "operationId": "com.atproto.admin.queryModerationStatuses", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "subject", "in": "query", "required": false, "schema": { "type": "string", "format": "uri" } }, { "name": "comment", "in": "query", "description": "Search subjects by keyword from comments", "required": false, "schema": { "type": "string", "description": "Search subjects by keyword from comments" } }, { "name": "reportedAfter", "in": "query", "description": "Search subjects reported after a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reported after a given timestamp", "format": "date-time" } }, { "name": "reportedBefore", "in": "query", "description": "Search subjects reported before a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reported before a given timestamp", "format": "date-time" } }, { "name": "reviewedAfter", "in": "query", "description": "Search subjects reviewed after a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reviewed after a given timestamp", "format": "date-time" } }, { "name": "reviewedBefore", "in": "query", "description": "Search subjects reviewed before a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reviewed before a given timestamp", "format": "date-time" } }, { "name": "includeMuted", "in": "query", "description": "By default, we don't include muted subjects in the results. Set this to true to include them.", "required": false, "schema": { "type": "boolean", "description": "By default, we don't include muted subjects in the results. Set this to true to include them." } }, { "name": "reviewState", "in": "query", "description": "Specify when fetching subjects in a certain state", "required": false, "schema": { "type": "string", "description": "Specify when fetching subjects in a certain state" } }, { "name": "ignoreSubjects", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "uri" } } }, { "name": "lastReviewedBy", "in": "query", "description": "Get all subject statuses that were reviewed by a specific moderator", "required": false, "schema": { "type": "string", "description": "Get all subject statuses that were reviewed by a specific moderator", "format": "did" } }, { "name": "sortField", "in": "query", "required": false, "schema": { "type": "string", "default": "lastReportedAt" } }, { "name": "sortDirection", "in": "query", "required": false, "schema": { "type": "string", "default": "desc" } }, { "name": "takendown", "in": "query", "description": "Get subjects that were taken down", "required": false, "schema": { "type": "boolean", "description": "Get subjects that were taken down" } }, { "name": "appealed", "in": "query", "description": "Get subjects in unresolved appealed status", "required": false, "schema": { "type": "boolean", "description": "Get subjects in unresolved appealed status" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "tags", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "excludeTags", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subjectStatuses" ], "properties": { "cursor": { "type": "string" }, "subjectStatuses": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.subjectStatusView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.rebaseRepo": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Administrative action to rebase an account's repo", "operationId": "com.atproto.admin.rebaseRepo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "repo" ], "properties": { "repo": { "type": "string", "description": "The handle or DID of the repo.", "format": "at-identifier" }, "swapCommit": { "type": "string", "description": "Compare and swap with the previous commit by cid.", "format": "cid" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidSwap" }, { "const": "ConcurrentWrites" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.resolveModerationReports": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Resolve moderation reports by an action.", "operationId": "com.atproto.admin.resolveModerationReports", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "actionId", "reportIds", "createdBy" ], "properties": { "actionId": { "type": "integer" }, "reportIds": { "type": "array", "items": { "type": "integer" } }, "createdBy": { "type": "string", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.actionView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.reverseModerationAction": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Reverse a moderation action.", "operationId": "com.atproto.admin.reverseModerationAction", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "id", "reason", "createdBy" ], "properties": { "id": { "type": "integer" }, "reason": { "type": "string" }, "createdBy": { "type": "string", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.actionView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.searchAccounts": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Get list of accounts that matches your search query.", "operationId": "com.atproto.admin.searchAccounts", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "email", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "accounts" ], "properties": { "cursor": { "type": "string" }, "accounts": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.accountView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.searchRepos": { "get": { "tags": [ "com.atproto.admin" ], "summary": "Find repositories based on a search term.", "operationId": "com.atproto.admin.searchRepos", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "term", "in": "query", "description": "DEPRECATED: use 'q' instead", "required": false, "schema": { "type": "string", "description": "DEPRECATED: use 'q' instead" } }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "repos" ], "properties": { "cursor": { "type": "string" }, "repos": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.repoView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.sendEmail": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Send email to a user's account email address.", "operationId": "com.atproto.admin.sendEmail", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "recipientDid", "content", "senderDid" ], "properties": { "recipientDid": { "type": "string", "format": "did" }, "content": { "type": "string" }, "subject": { "type": "string" }, "senderDid": { "type": "string", "format": "did" }, "comment": { "type": "string", "description": "Additional comment by the sender that won't be used in the email itself but helpful to provide more context for moderators/reviewers" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "sent" ], "properties": { "sent": { "type": "boolean" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.takeModerationAction": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Take a moderation action on an actor.", "operationId": "com.atproto.admin.takeModerationAction", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "action", "subject", "reason", "createdBy" ], "properties": { "action": { "type": "string", "enum": [ "com.atproto.admin.defs#takedown", "com.atproto.admin.defs#flag", "com.atproto.admin.defs#acknowledge" ] }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } ] }, "subjectBlobCids": { "type": "array", "items": { "type": "string", "format": "cid" } }, "createLabelVals": { "type": "array", "items": { "type": "string" } }, "negateLabelVals": { "type": "array", "items": { "type": "string" } }, "reason": { "type": "string" }, "durationInHours": { "type": "integer" }, "createdBy": { "type": "string", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.actionView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "SubjectHasAction" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.updateAccountEmail": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Administrative action to update an account's email.", "operationId": "com.atproto.admin.updateAccountEmail", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "account", "email" ], "properties": { "account": { "type": "string", "description": "The handle or DID of the repo.", "format": "at-identifier" }, "email": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.updateAccountHandle": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Administrative action to update an account's handle.", "operationId": "com.atproto.admin.updateAccountHandle", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "handle" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.updateAccountPassword": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Update the password for a user account as an administrator.", "operationId": "com.atproto.admin.updateAccountPassword", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "password" ], "properties": { "did": { "type": "string", "format": "did" }, "password": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.updateAccountSigningKey": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Administrative action to update an account's signing key in their Did document.", "operationId": "com.atproto.admin.updateAccountSigningKey", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "signingKey" ], "properties": { "did": { "type": "string", "format": "did" }, "signingKey": { "type": "string", "description": "Did-key formatted public key", "format": "did" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.updateCommunicationTemplate": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Administrative action to update an existing communication template. Allows passing partial fields to patch specific fields only.", "operationId": "com.atproto.admin.updateCommunicationTemplate", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "description": "ID of the template to be updated." }, "name": { "type": "string", "description": "Name of the template." }, "contentMarkdown": { "type": "string", "description": "Content of the template, markdown supported, can contain variable placeholders." }, "subject": { "type": "string", "description": "Subject of the message, used in emails." }, "updatedBy": { "type": "string", "description": "DID of the user who is updating the template.", "format": "did" }, "disabled": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.admin.defs.communicationTemplateView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.admin.updateSubjectStatus": { "post": { "tags": [ "com.atproto.admin" ], "summary": "Update the service-specific admin status of a subject (account, record, or blob).", "operationId": "com.atproto.admin.updateSubjectStatus", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "subject" ], "properties": { "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.repoBlobRef" } ] }, "takedown": { "$ref": "#/components/schemas/com.atproto.admin.defs.statusAttr" }, "deactivated": { "$ref": "#/components/schemas/com.atproto.admin.defs.statusAttr" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subject" ], "properties": { "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, { "$ref": "#/components/schemas/com.atproto.admin.defs.repoBlobRef" } ] }, "takedown": { "$ref": "#/components/schemas/com.atproto.admin.defs.statusAttr" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.getRecommendedDidCredentials": { "get": { "tags": [ "com.atproto.identity" ], "summary": "Describe the credentials that should be included in the DID doc of an account that is migrating to this service.", "operationId": "com.atproto.identity.getRecommendedDidCredentials", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "rotationKeys": { "type": "array", "items": { "type": "string" } }, "alsoKnownAs": { "type": "array", "items": { "type": "string" } }, "verificationMethods": {}, "services": {} } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.refreshIdentity": { "post": { "tags": [ "com.atproto.identity" ], "summary": "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.", "operationId": "com.atproto.identity.refreshIdentity", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "identifier" ], "properties": { "identifier": { "type": "string", "format": "at-identifier" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.identity.defs.identityInfo" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "HandleNotFound" }, { "const": "DidNotFound" }, { "const": "DidDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.requestPlcOperationSignature": { "post": { "tags": [ "com.atproto.identity" ], "summary": "Request an email with a code to in order to request a signed PLC operation. Requires Auth.", "operationId": "com.atproto.identity.requestPlcOperationSignature", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.resolveDid": { "get": { "tags": [ "com.atproto.identity" ], "summary": "Resolves DID to DID document. Does not bi-directionally verify handle.", "operationId": "com.atproto.identity.resolveDid", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "DID to resolve.", "required": true, "schema": { "type": "string", "description": "DID to resolve.", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "didDoc" ], "properties": { "didDoc": {} } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "DidNotFound" }, { "const": "DidDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.resolveHandle": { "get": { "tags": [ "com.atproto.identity" ], "summary": "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.", "operationId": "com.atproto.identity.resolveHandle", "parameters": [ { "name": "handle", "in": "query", "description": "The handle to resolve.", "required": true, "schema": { "type": "string", "description": "The handle to resolve.", "format": "handle" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "HandleNotFound" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.resolveIdentity": { "get": { "tags": [ "com.atproto.identity" ], "summary": "Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).", "operationId": "com.atproto.identity.resolveIdentity", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "identifier", "in": "query", "description": "Handle or DID to resolve.", "required": true, "schema": { "type": "string", "description": "Handle or DID to resolve.", "format": "at-identifier" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.identity.defs.identityInfo" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "HandleNotFound" }, { "const": "DidNotFound" }, { "const": "DidDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.signPlcOperation": { "post": { "tags": [ "com.atproto.identity" ], "summary": "Signs a PLC operation to update some value(s) in the requesting DID's document.", "operationId": "com.atproto.identity.signPlcOperation", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "description": "A token received through com.atproto.identity.requestPlcOperationSignature" }, "rotationKeys": { "type": "array", "items": { "type": "string" } }, "alsoKnownAs": { "type": "array", "items": { "type": "string" } }, "verificationMethods": {}, "services": {} } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "operation" ], "properties": { "operation": {} } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.submitPlcOperation": { "post": { "tags": [ "com.atproto.identity" ], "summary": "Validates a PLC operation to ensure that it doesn't violate a service's constraints or get the identity into a bad state, then submits it to the PLC registry", "operationId": "com.atproto.identity.submitPlcOperation", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "operation" ], "properties": { "operation": {} } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.identity.updateHandle": { "post": { "tags": [ "com.atproto.identity" ], "summary": "Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary. Implemented by PDS, and requires auth.", "operationId": "com.atproto.identity.updateHandle", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "handle" ], "properties": { "handle": { "type": "string", "description": "The new handle.", "format": "handle" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.label.queryLabels": { "get": { "tags": [ "com.atproto.label" ], "summary": "Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth.", "operationId": "com.atproto.label.queryLabels", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uriPatterns", "in": "query", "description": "List of AT URI patterns to match (boolean 'OR'). Each may be a prefix (ending with '*'; will match inclusive of the string leading to '*'), or a full URI.", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "sources", "in": "query", "description": "Optional list of label sources (DIDs) to filter on.", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "did" } } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 250, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "labels" ], "properties": { "cursor": { "type": "string" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.lexicon.resolveLexicon": { "get": { "tags": [ "com.atproto.lexicon" ], "summary": "Resolves an atproto lexicon (NSID) to a schema.", "operationId": "com.atproto.lexicon.resolveLexicon", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "nsid", "in": "query", "description": "The lexicon NSID to resolve.", "required": true, "schema": { "type": "string", "description": "The lexicon NSID to resolve.", "format": "nsid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "cid", "schema" ], "properties": { "cid": { "type": "string", "description": "The CID of the lexicon schema record.", "format": "cid" }, "schema": { "$ref": "#/components/schemas/com.atproto.lexicon.schema.main" }, "uri": { "type": "string", "description": "The AT-URI of the lexicon schema record.", "format": "at-uri" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "LexiconNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.moderation.createReport": { "post": { "tags": [ "com.atproto.moderation" ], "summary": "Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.", "operationId": "com.atproto.moderation.createReport", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "reasonType", "subject" ], "properties": { "reasonType": { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonType" }, "reason": { "type": "string", "description": "Additional context about the content and violation.", "maxLength": 20000 }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } ] }, "modTool": { "$ref": "#/components/schemas/com.atproto.moderation.createReport.modTool" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "id", "reasonType", "subject", "reportedBy", "createdAt" ], "properties": { "id": { "type": "integer" }, "reasonType": { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonType" }, "reason": { "type": "string", "maxLength": 20000 }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } ] }, "reportedBy": { "type": "string", "format": "did" }, "createdAt": { "type": "string", "format": "date-time" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.applyWrites": { "post": { "tags": [ "com.atproto.repo" ], "summary": "Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.", "operationId": "com.atproto.repo.applyWrites", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "repo", "writes" ], "properties": { "repo": { "type": "string", "description": "The handle or DID of the repo (aka, current account).", "format": "at-identifier" }, "validate": { "type": "boolean", "description": "Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons." }, "writes": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.repo.applyWrites.create" }, { "$ref": "#/components/schemas/com.atproto.repo.applyWrites.update" }, { "$ref": "#/components/schemas/com.atproto.repo.applyWrites.delete" } ] } }, "swapCommit": { "type": "string", "description": "If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.", "format": "cid" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [], "properties": { "commit": { "$ref": "#/components/schemas/com.atproto.repo.defs.commitMeta" }, "results": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.repo.applyWrites.createResult" }, { "$ref": "#/components/schemas/com.atproto.repo.applyWrites.updateResult" }, { "$ref": "#/components/schemas/com.atproto.repo.applyWrites.deleteResult" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidSwap" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.createRecord": { "post": { "tags": [ "com.atproto.repo" ], "summary": "Create a single new repository record. Requires auth, implemented by PDS.", "operationId": "com.atproto.repo.createRecord", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "repo", "collection", "record" ], "properties": { "repo": { "type": "string", "description": "The handle or DID of the repo (aka, current account).", "format": "at-identifier" }, "collection": { "type": "string", "description": "The NSID of the record collection.", "format": "nsid" }, "rkey": { "type": "string", "description": "The Record Key.", "format": "record-key", "maxLength": 512 }, "validate": { "type": "boolean", "description": "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons." }, "record": {}, "swapCommit": { "type": "string", "description": "Compare and swap with the previous commit by CID.", "format": "cid" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "cid" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "commit": { "$ref": "#/components/schemas/com.atproto.repo.defs.commitMeta" }, "validationStatus": { "type": "string", "enum": [ "valid", "unknown" ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidSwap" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.deleteRecord": { "post": { "tags": [ "com.atproto.repo" ], "summary": "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.", "operationId": "com.atproto.repo.deleteRecord", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "repo", "collection", "rkey" ], "properties": { "repo": { "type": "string", "description": "The handle or DID of the repo (aka, current account).", "format": "at-identifier" }, "collection": { "type": "string", "description": "The NSID of the record collection.", "format": "nsid" }, "rkey": { "type": "string", "description": "The Record Key.", "format": "record-key" }, "swapRecord": { "type": "string", "description": "Compare and swap with the previous record by CID.", "format": "cid" }, "swapCommit": { "type": "string", "description": "Compare and swap with the previous commit by CID.", "format": "cid" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "commit": { "$ref": "#/components/schemas/com.atproto.repo.defs.commitMeta" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidSwap" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.describeRepo": { "get": { "tags": [ "com.atproto.repo" ], "summary": "Get information about an account and repository, including the list of collections. Does not require auth.", "operationId": "com.atproto.repo.describeRepo", "parameters": [ { "name": "repo", "in": "query", "description": "The handle or DID of the repo.", "required": true, "schema": { "type": "string", "description": "The handle or DID of the repo.", "format": "at-identifier" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "handle", "did", "didDoc", "collections", "handleIsCorrect" ], "properties": { "handle": { "type": "string", "format": "handle" }, "did": { "type": "string", "format": "did" }, "didDoc": {}, "collections": { "type": "array", "items": { "type": "string", "format": "nsid" } }, "handleIsCorrect": { "type": "boolean", "description": "Indicates if handle is currently valid (resolves bi-directionally)" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.getRecord": { "get": { "tags": [ "com.atproto.repo" ], "summary": "Get a single record from a repository. Does not require auth.", "operationId": "com.atproto.repo.getRecord", "parameters": [ { "name": "repo", "in": "query", "description": "The handle or DID of the repo.", "required": true, "schema": { "type": "string", "description": "The handle or DID of the repo.", "format": "at-identifier" } }, { "name": "collection", "in": "query", "description": "The NSID of the record collection.", "required": true, "schema": { "type": "string", "description": "The NSID of the record collection.", "format": "nsid" } }, { "name": "rkey", "in": "query", "description": "The Record Key.", "required": true, "schema": { "type": "string", "description": "The Record Key.", "format": "record-key" } }, { "name": "cid", "in": "query", "description": "The CID of the version of the record. If not specified, then return the most recent version.", "required": false, "schema": { "type": "string", "description": "The CID of the version of the record. If not specified, then return the most recent version.", "format": "cid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "value" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "value": {} } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "RecordNotFound" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.importRepo": { "post": { "tags": [ "com.atproto.repo" ], "summary": "Import a repo in the form of a CAR file. Requires Content-Length HTTP header to be set.", "operationId": "com.atproto.repo.importRepo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/vnd.ipld.car": {} } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.listMissingBlobs": { "get": { "tags": [ "com.atproto.repo" ], "summary": "Returns a list of missing blobs for the requesting account. Intended to be used in the account migration flow.", "operationId": "com.atproto.repo.listMissingBlobs", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 500 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "blobs" ], "properties": { "cursor": { "type": "string" }, "blobs": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.repo.listMissingBlobs.recordBlob" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.listRecords": { "get": { "tags": [ "com.atproto.repo" ], "summary": "List a range of records in a repository, matching a specific collection. Does not require auth.", "operationId": "com.atproto.repo.listRecords", "parameters": [ { "name": "repo", "in": "query", "description": "The handle or DID of the repo.", "required": true, "schema": { "type": "string", "description": "The handle or DID of the repo.", "format": "at-identifier" } }, { "name": "collection", "in": "query", "description": "The NSID of the record type.", "required": true, "schema": { "type": "string", "description": "The NSID of the record type.", "format": "nsid" } }, { "name": "limit", "in": "query", "description": "The number of records to return.", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "reverse", "in": "query", "description": "Flag to reverse the order of the returned records.", "required": false, "schema": { "type": "boolean", "description": "Flag to reverse the order of the returned records." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "records" ], "properties": { "cursor": { "type": "string" }, "records": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.repo.listRecords.record" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.putRecord": { "post": { "tags": [ "com.atproto.repo" ], "summary": "Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS.", "operationId": "com.atproto.repo.putRecord", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "repo", "collection", "rkey", "record" ], "properties": { "repo": { "type": "string", "description": "The handle or DID of the repo (aka, current account).", "format": "at-identifier" }, "collection": { "type": "string", "description": "The NSID of the record collection.", "format": "nsid" }, "rkey": { "type": "string", "description": "The Record Key.", "format": "record-key", "maxLength": 512 }, "validate": { "type": "boolean", "description": "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons." }, "record": {}, "swapRecord": { "type": "string", "description": "Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation", "format": "cid" }, "swapCommit": { "type": "string", "description": "Compare and swap with the previous commit by CID.", "format": "cid" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "uri", "cid" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "commit": { "$ref": "#/components/schemas/com.atproto.repo.defs.commitMeta" }, "validationStatus": { "type": "string", "enum": [ "valid", "unknown" ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidSwap" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.rebaseRepo": { "post": { "tags": [ "com.atproto.repo" ], "summary": "Simple rebase of repo that deletes history", "operationId": "com.atproto.repo.rebaseRepo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "repo" ], "properties": { "repo": { "type": "string", "description": "The handle or DID of the repo.", "format": "at-identifier" }, "swapCommit": { "type": "string", "description": "Compare and swap with the previous commit by cid.", "format": "cid" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidSwap" }, { "const": "ConcurrentWrites" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.repo.uploadBlob": { "post": { "tags": [ "com.atproto.repo" ], "summary": "Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS.", "operationId": "com.atproto.repo.uploadBlob", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "*/*": {} } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "blob" ], "properties": { "blob": { "type": "string", "format": "binary" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.activateAccount": { "post": { "tags": [ "com.atproto.server" ], "summary": "Activates a currently deactivated account. Used to finalize account migration after the account's repo is imported and identity is setup.", "operationId": "com.atproto.server.activateAccount", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.checkAccountStatus": { "get": { "tags": [ "com.atproto.server" ], "summary": "Returns the status of an account, especially as pertaining to import or recovery. Can be called many times over the course of an account migration. Requires auth and can only be called pertaining to oneself.", "operationId": "com.atproto.server.checkAccountStatus", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "activated", "validDid", "repoCommit", "repoRev", "repoBlocks", "indexedRecords", "privateStateValues", "expectedBlobs", "importedBlobs" ], "properties": { "activated": { "type": "boolean" }, "validDid": { "type": "boolean" }, "repoCommit": { "type": "string", "format": "cid" }, "repoRev": { "type": "string" }, "repoBlocks": { "type": "integer" }, "indexedRecords": { "type": "integer" }, "privateStateValues": { "type": "integer" }, "expectedBlobs": { "type": "integer" }, "importedBlobs": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.confirmEmail": { "post": { "tags": [ "com.atproto.server" ], "summary": "Confirm an email using a token from com.atproto.server.requestEmailConfirmation.", "operationId": "com.atproto.server.confirmEmail", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "email", "token" ], "properties": { "email": { "type": "string" }, "token": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "AccountNotFound" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidEmail" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.createAccount": { "post": { "tags": [ "com.atproto.server" ], "summary": "Create an account. Implemented by PDS.", "operationId": "com.atproto.server.createAccount", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "handle" ], "properties": { "email": { "type": "string" }, "handle": { "type": "string", "description": "Requested handle for the account.", "format": "handle" }, "did": { "type": "string", "description": "Pre-existing atproto DID, being imported to a new account.", "format": "did" }, "inviteCode": { "type": "string" }, "verificationCode": { "type": "string" }, "verificationPhone": { "type": "string" }, "password": { "type": "string", "description": "Initial account password. May need to meet instance-specific password strength requirements." }, "recoveryKey": { "type": "string", "description": "DID PLC rotation key (aka, recovery key) to be included in PLC creation operation." }, "plcOp": {} } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "description": "Account login session returned on successful account creation.", "required": [ "accessJwt", "refreshJwt", "handle", "did" ], "properties": { "accessJwt": { "type": "string" }, "refreshJwt": { "type": "string" }, "handle": { "type": "string", "format": "handle" }, "did": { "type": "string", "description": "The DID of the new account.", "format": "did" }, "didDoc": {} } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "InvalidHandle" }, { "const": "InvalidPassword" }, { "const": "InvalidInviteCode" }, { "const": "HandleNotAvailable" }, { "const": "UnsupportedDomain" }, { "const": "UnresolvableDid" }, { "const": "IncompatibleDidDoc" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.createAppPassword": { "post": { "tags": [ "com.atproto.server" ], "summary": "Create an App Password.", "operationId": "com.atproto.server.createAppPassword", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "A short name for the App Password, to help distinguish them." }, "privileged": { "type": "boolean", "description": "If an app password has 'privileged' access to possibly sensitive account state. Meant for use with trusted clients." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/com.atproto.server.createAppPassword.appPassword" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "AccountTakedown" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.createInviteCode": { "post": { "tags": [ "com.atproto.server" ], "summary": "Create an invite code.", "operationId": "com.atproto.server.createInviteCode", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "useCount" ], "properties": { "useCount": { "type": "integer" }, "forAccount": { "type": "string", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.createInviteCodes": { "post": { "tags": [ "com.atproto.server" ], "summary": "Create invite codes.", "operationId": "com.atproto.server.createInviteCodes", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "codeCount", "useCount" ], "properties": { "codeCount": { "type": "integer", "default": 1 }, "useCount": { "type": "integer" }, "forAccounts": { "type": "array", "items": { "type": "string", "format": "did" } } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "codes" ], "properties": { "codes": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.server.createInviteCodes.accountCodes" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.createSession": { "post": { "tags": [ "com.atproto.server" ], "summary": "Create an authentication session.", "operationId": "com.atproto.server.createSession", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "identifier", "password" ], "properties": { "identifier": { "type": "string", "description": "Handle or other identifier supported by the server for the authenticating user." }, "password": { "type": "string" }, "authFactorToken": { "type": "string" }, "allowTakendown": { "type": "boolean", "description": "When true, instead of throwing error for takendown accounts, a valid response with a narrow scoped token will be returned" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "accessJwt", "refreshJwt", "handle", "did" ], "properties": { "accessJwt": { "type": "string" }, "refreshJwt": { "type": "string" }, "handle": { "type": "string", "format": "handle" }, "did": { "type": "string", "format": "did" }, "didDoc": {}, "email": { "type": "string" }, "emailConfirmed": { "type": "boolean" }, "emailAuthFactor": { "type": "boolean" }, "active": { "type": "boolean" }, "status": { "type": "string", "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.", "enum": [ "takendown", "suspended", "deactivated" ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "AccountTakedown" }, { "const": "AuthFactorTokenRequired" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.deactivateAccount": { "post": { "tags": [ "com.atproto.server" ], "summary": "Deactivates a currently active account. Stops serving of repo, and future writes to repo until reactivated. Used to finalize account migration with the old host after the account has been activated on the new host.", "operationId": "com.atproto.server.deactivateAccount", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "deleteAfter": { "type": "string", "description": "A recommendation to server as to how long they should hold onto the deactivated account before deleting.", "format": "date-time" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.deleteAccount": { "post": { "tags": [ "com.atproto.server" ], "summary": "Delete an actor's account with a token and password. Can only be called after requesting a deletion token. Requires auth.", "operationId": "com.atproto.server.deleteAccount", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "password", "token" ], "properties": { "did": { "type": "string", "format": "did" }, "password": { "type": "string" }, "token": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.deleteSession": { "post": { "tags": [ "com.atproto.server" ], "summary": "Delete the current session. Requires auth.", "operationId": "com.atproto.server.deleteSession", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.describeServer": { "get": { "tags": [ "com.atproto.server" ], "summary": "Describes the server's account creation requirements and capabilities. Implemented by PDS.", "operationId": "com.atproto.server.describeServer", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "availableUserDomains" ], "properties": { "inviteCodeRequired": { "type": "boolean", "description": "If true, an invite code must be supplied to create an account on this instance." }, "phoneVerificationRequired": { "type": "boolean", "description": "If true, a phone verification token must be supplied to create an account on this instance." }, "availableUserDomains": { "type": "array", "items": { "type": "string" } }, "links": { "$ref": "#/components/schemas/com.atproto.server.describeServer.links" }, "contact": { "$ref": "#/components/schemas/com.atproto.server.describeServer.contact" }, "did": { "type": "string", "format": "did" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.getAccountInviteCodes": { "get": { "tags": [ "com.atproto.server" ], "summary": "Get all invite codes for the current account. Requires auth.", "operationId": "com.atproto.server.getAccountInviteCodes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "includeUsed", "in": "query", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "createAvailable", "in": "query", "description": "Controls whether any new 'earned' but not 'created' invites should be created.", "required": false, "schema": { "type": "boolean", "description": "Controls whether any new 'earned' but not 'created' invites should be created.", "default": true } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "codes" ], "properties": { "codes": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCode" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "DuplicateCreate" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.getServiceAuth": { "get": { "tags": [ "com.atproto.server" ], "summary": "Get a signed token on behalf of the requesting DID for the requested service.", "operationId": "com.atproto.server.getServiceAuth", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "aud", "in": "query", "description": "The DID of the service that the token will be used to authenticate with", "required": true, "schema": { "type": "string", "description": "The DID of the service that the token will be used to authenticate with", "format": "did" } }, { "name": "exp", "in": "query", "description": "The time in Unix Epoch seconds that the JWT expires. Defaults to 60 seconds in the future. The service may enforce certain time bounds on tokens depending on the requested scope.", "required": false, "schema": { "type": "integer" } }, { "name": "lxm", "in": "query", "description": "Lexicon (XRPC) method to bind the requested token to", "required": false, "schema": { "type": "string", "description": "Lexicon (XRPC) method to bind the requested token to", "format": "nsid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "token" ], "properties": { "token": { "type": "string" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BadExpiration" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.getSession": { "get": { "tags": [ "com.atproto.server" ], "summary": "Get information about the current auth session. Requires auth.", "operationId": "com.atproto.server.getSession", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "handle", "did" ], "properties": { "handle": { "type": "string", "format": "handle" }, "did": { "type": "string", "format": "did" }, "email": { "type": "string" }, "emailConfirmed": { "type": "boolean" }, "emailAuthFactor": { "type": "boolean" }, "didDoc": {}, "active": { "type": "boolean" }, "status": { "type": "string", "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.", "enum": [ "takendown", "suspended", "deactivated" ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.listAppPasswords": { "get": { "tags": [ "com.atproto.server" ], "summary": "List all App Passwords.", "operationId": "com.atproto.server.listAppPasswords", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "passwords" ], "properties": { "passwords": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.server.listAppPasswords.appPassword" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "AccountTakedown" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.refreshSession": { "post": { "tags": [ "com.atproto.server" ], "summary": "Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').", "operationId": "com.atproto.server.refreshSession", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "accessJwt", "refreshJwt", "handle", "did" ], "properties": { "accessJwt": { "type": "string" }, "refreshJwt": { "type": "string" }, "handle": { "type": "string", "format": "handle" }, "did": { "type": "string", "format": "did" }, "didDoc": {}, "active": { "type": "boolean" }, "status": { "type": "string", "description": "Hosting status of the account. If not specified, then assume 'active'.", "enum": [ "takendown", "suspended", "deactivated" ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "AccountTakedown" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.requestAccountDelete": { "post": { "tags": [ "com.atproto.server" ], "summary": "Initiate a user account deletion via email.", "operationId": "com.atproto.server.requestAccountDelete", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.requestEmailConfirmation": { "post": { "tags": [ "com.atproto.server" ], "summary": "Request an email with a code to confirm ownership of email.", "operationId": "com.atproto.server.requestEmailConfirmation", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.requestEmailUpdate": { "post": { "tags": [ "com.atproto.server" ], "summary": "Request a token in order to update email.", "operationId": "com.atproto.server.requestEmailUpdate", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "tokenRequired" ], "properties": { "tokenRequired": { "type": "boolean" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.requestPasswordReset": { "post": { "tags": [ "com.atproto.server" ], "summary": "Initiate a user account password reset via email.", "operationId": "com.atproto.server.requestPasswordReset", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.reserveSigningKey": { "post": { "tags": [ "com.atproto.server" ], "summary": "Reserve a repo signing key, for use with account creation. Necessary so that a DID PLC update operation can be constructed during an account migraiton. Public and does not require auth; implemented by PDS. NOTE: this endpoint may change when full account migration is implemented.", "operationId": "com.atproto.server.reserveSigningKey", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "did": { "type": "string", "description": "The DID to reserve a key for.", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "signingKey" ], "properties": { "signingKey": { "type": "string", "description": "The public key for the reserved signing key, in did:key serialization." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.resetPassword": { "post": { "tags": [ "com.atproto.server" ], "summary": "Reset a user account password using a token.", "operationId": "com.atproto.server.resetPassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "token", "password" ], "properties": { "token": { "type": "string" }, "password": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.revokeAppPassword": { "post": { "tags": [ "com.atproto.server" ], "summary": "Revoke an App Password by name.", "operationId": "com.atproto.server.revokeAppPassword", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.server.updateEmail": { "post": { "tags": [ "com.atproto.server" ], "summary": "Update an account's email.", "operationId": "com.atproto.server.updateEmail", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string" }, "emailAuthFactor": { "type": "boolean" }, "token": { "type": "string", "description": "Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "TokenRequired" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getBlob": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Get a blob associated with a given account. Returns the full blob as originally uploaded. Does not require auth; implemented by PDS.", "operationId": "com.atproto.sync.getBlob", "parameters": [ { "name": "did", "in": "query", "description": "The DID of the account.", "required": true, "schema": { "type": "string", "description": "The DID of the account.", "format": "did" } }, { "name": "cid", "in": "query", "description": "The CID of the blob to fetch", "required": true, "schema": { "type": "string", "description": "The CID of the blob to fetch", "format": "cid" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": {} } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "BlobNotFound" }, { "const": "RepoNotFound" }, { "const": "RepoTakendown" }, { "const": "RepoSuspended" }, { "const": "RepoDeactivated" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getBlocks": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Get data blocks from a given repo, by CID. For example, intermediate MST nodes, or records. Does not require auth; implemented by PDS.", "operationId": "com.atproto.sync.getBlocks", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } }, { "name": "cids", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "cid" } } } ], "responses": { "200": { "description": "OK", "content": { "application/vnd.ipld.car": {} } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "BlockNotFound" }, { "const": "RepoNotFound" }, { "const": "RepoTakendown" }, { "const": "RepoSuspended" }, { "const": "RepoDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getCheckout": { "get": { "tags": [ "com.atproto.sync" ], "summary": "DEPRECATED - please use com.atproto.sync.getRepo instead", "operationId": "com.atproto.sync.getCheckout", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/vnd.ipld.car": {} } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getCommitPath": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Gets the path of repo commits", "operationId": "com.atproto.sync.getCommitPath", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } }, { "name": "latest", "in": "query", "description": "The most recent commit", "required": false, "schema": { "type": "string", "description": "The most recent commit", "format": "cid" } }, { "name": "earliest", "in": "query", "description": "The earliest commit to start from", "required": false, "schema": { "type": "string", "description": "The earliest commit to start from", "format": "cid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "commits" ], "properties": { "commits": { "type": "array", "items": { "type": "string", "format": "cid" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getHead": { "get": { "tags": [ "com.atproto.sync" ], "summary": "DEPRECATED - please use com.atproto.sync.getLatestCommit instead", "operationId": "com.atproto.sync.getHead", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "root" ], "properties": { "root": { "type": "string", "format": "cid" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "HeadNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getHostStatus": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Returns information about a specified upstream host, as consumed by the server. Implemented by relays.", "operationId": "com.atproto.sync.getHostStatus", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "hostname", "in": "query", "description": "Hostname of the host (eg, PDS or relay) being queried.", "required": true, "schema": { "type": "string", "description": "Hostname of the host (eg, PDS or relay) being queried." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "hostname" ], "properties": { "hostname": { "type": "string" }, "seq": { "type": "integer" }, "accountCount": { "type": "integer" }, "status": { "$ref": "#/components/schemas/com.atproto.sync.defs.hostStatus" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "HostNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getLatestCommit": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Get the current commit CID & revision of the specified repo. Does not require auth.", "operationId": "com.atproto.sync.getLatestCommit", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "cid", "rev" ], "properties": { "cid": { "type": "string", "format": "cid" }, "rev": { "type": "string", "format": "tid" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RepoNotFound" }, { "const": "RepoTakendown" }, { "const": "RepoSuspended" }, { "const": "RepoDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getRecord": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Get data blocks needed to prove the existence or non-existence of record in the current version of repo. Does not require auth.", "operationId": "com.atproto.sync.getRecord", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } }, { "name": "collection", "in": "query", "required": true, "schema": { "type": "string", "format": "nsid" } }, { "name": "rkey", "in": "query", "description": "Record Key", "required": true, "schema": { "type": "string", "description": "Record Key", "format": "record-key" } } ], "responses": { "200": { "description": "OK", "content": { "application/vnd.ipld.car": {} } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RecordNotFound" }, { "const": "RepoNotFound" }, { "const": "RepoTakendown" }, { "const": "RepoSuspended" }, { "const": "RepoDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getRepo": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS.", "operationId": "com.atproto.sync.getRepo", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } }, { "name": "since", "in": "query", "description": "The revision ('rev') of the repo to create a diff from.", "required": false, "schema": { "type": "string", "description": "The revision ('rev') of the repo to create a diff from.", "format": "tid" } } ], "responses": { "200": { "description": "OK", "content": { "application/vnd.ipld.car": {} } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RepoNotFound" }, { "const": "RepoTakendown" }, { "const": "RepoSuspended" }, { "const": "RepoDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.getRepoStatus": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Get the hosting status for a repository, on this server. Expected to be implemented by PDS and Relay.", "operationId": "com.atproto.sync.getRepoStatus", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "active" ], "properties": { "did": { "type": "string", "format": "did" }, "active": { "type": "boolean" }, "status": { "type": "string", "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.", "enum": [ "takendown", "suspended", "deleted", "deactivated", "desynchronized", "throttled" ] }, "rev": { "type": "string", "description": "Optional field, the current rev of the repo, if active=true", "format": "tid" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RepoNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.listBlobs": { "get": { "tags": [ "com.atproto.sync" ], "summary": "List blob CIDs for an account, since some repo revision. Does not require auth; implemented by PDS.", "operationId": "com.atproto.sync.listBlobs", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID of the repo.", "required": true, "schema": { "type": "string", "description": "The DID of the repo.", "format": "did" } }, { "name": "since", "in": "query", "description": "Optional revision of the repo to list blobs since.", "required": false, "schema": { "type": "string", "description": "Optional revision of the repo to list blobs since.", "format": "tid" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 500 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "cids" ], "properties": { "cursor": { "type": "string" }, "cids": { "type": "array", "items": { "type": "string", "format": "cid" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RepoNotFound" }, { "const": "RepoTakendown" }, { "const": "RepoSuspended" }, { "const": "RepoDeactivated" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.listHosts": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays.", "operationId": "com.atproto.sync.listHosts", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 200 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "hosts" ], "properties": { "cursor": { "type": "string" }, "hosts": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.sync.listHosts.host" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.listRepos": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Enumerates all the DID, rev, and commit CID for all repos hosted by this service. Does not require auth; implemented by PDS and Relay.", "operationId": "com.atproto.sync.listRepos", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 500 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "repos" ], "properties": { "cursor": { "type": "string" }, "repos": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.sync.listRepos.repo" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.listReposByCollection": { "get": { "tags": [ "com.atproto.sync" ], "summary": "Enumerates all the DIDs which have records with the given collection NSID.", "operationId": "com.atproto.sync.listReposByCollection", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "collection", "in": "query", "required": true, "schema": { "type": "string", "format": "nsid" } }, { "name": "limit", "in": "query", "description": "Maximum size of response set. Recommend setting a large maximum (1000+) when enumerating large DID lists.", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 2000, "default": 500 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "repos" ], "properties": { "cursor": { "type": "string" }, "repos": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.sync.listReposByCollection.repo" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.notifyOfUpdate": { "post": { "tags": [ "com.atproto.sync" ], "summary": "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", "operationId": "com.atproto.sync.notifyOfUpdate", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "hostname" ], "properties": { "hostname": { "type": "string", "description": "Hostname of the current service (usually a PDS) that is notifying of update." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.sync.requestCrawl": { "post": { "tags": [ "com.atproto.sync" ], "summary": "Request a service to persistently crawl hosted repos. Expected use is new PDS instances declaring their existence to Relays. Does not require auth.", "operationId": "com.atproto.sync.requestCrawl", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "hostname" ], "properties": { "hostname": { "type": "string", "description": "Hostname of the current service (eg, PDS) that is requesting to be crawled." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "HostBanned" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.addReservedHandle": { "post": { "tags": [ "com.atproto.temp" ], "summary": "Add a handle to the set of reserved handles.", "operationId": "com.atproto.temp.addReservedHandle", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "handle" ], "properties": { "handle": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.checkHandleAvailability": { "get": { "tags": [ "com.atproto.temp" ], "summary": "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.", "operationId": "com.atproto.temp.checkHandleAvailability", "parameters": [ { "name": "handle", "in": "query", "description": "Tentative handle. Will be checked for availability or used to build handle suggestions.", "required": true, "schema": { "type": "string", "description": "Tentative handle. Will be checked for availability or used to build handle suggestions.", "format": "handle" } }, { "name": "email", "in": "query", "description": "User-provided email. Might be used to build handle suggestions.", "required": false, "schema": { "type": "string", "description": "User-provided email. Might be used to build handle suggestions." } }, { "name": "birthDate", "in": "query", "description": "User-provided birth date. Might be used to build handle suggestions.", "required": false, "schema": { "type": "string", "description": "User-provided birth date. Might be used to build handle suggestions.", "format": "date-time" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "handle", "result" ], "properties": { "handle": { "type": "string", "description": "Echo of the input handle.", "format": "handle" }, "result": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.temp.checkHandleAvailability.resultAvailable" }, { "$ref": "#/components/schemas/com.atproto.temp.checkHandleAvailability.resultUnavailable" } ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "InvalidEmail" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.checkSignupQueue": { "get": { "tags": [ "com.atproto.temp" ], "summary": "Check accounts location in signup queue.", "operationId": "com.atproto.temp.checkSignupQueue", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "activated" ], "properties": { "activated": { "type": "boolean" }, "placeInQueue": { "type": "integer" }, "estimatedTimeMs": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.dereferenceScope": { "get": { "tags": [ "com.atproto.temp" ], "summary": "Allows finding the oauth permission scope from a reference", "operationId": "com.atproto.temp.dereferenceScope", "parameters": [ { "name": "scope", "in": "query", "description": "The scope reference (starts with 'ref:')", "required": true, "schema": { "type": "string", "description": "The scope reference (starts with 'ref:')" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "scope" ], "properties": { "scope": { "type": "string", "description": "The full oauth permission scope" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "InvalidScopeReference" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.fetchLabels": { "get": { "tags": [ "com.atproto.temp" ], "summary": "DEPRECATED: use queryLabels or subscribeLabels instead -- Fetch all labels from a labeler created after a certain date.", "operationId": "com.atproto.temp.fetchLabels", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "since", "in": "query", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 250, "default": 50 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "labels" ], "properties": { "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.importRepo": { "post": { "tags": [ "com.atproto.temp" ], "summary": "Gets the did's repo, optionally catching up from a specific revision.", "operationId": "com.atproto.temp.importRepo", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/vnd.ipld.car": {} } }, "responses": { "200": { "description": "OK", "content": { "text/plain": {} } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.pushBlob": { "post": { "tags": [ "com.atproto.temp" ], "summary": "Gets the did's repo, optionally catching up from a specific revision.", "operationId": "com.atproto.temp.pushBlob", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "*/*": {} } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.requestPhoneVerification": { "post": { "tags": [ "com.atproto.temp" ], "summary": "Request a verification code to be sent to the supplied phone number", "operationId": "com.atproto.temp.requestPhoneVerification", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "phoneNumber" ], "properties": { "phoneNumber": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" } ] }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.revokeAccountCredentials": { "post": { "tags": [ "com.atproto.temp" ], "summary": "Revoke sessions, password, and app passwords associated with account. May be resolved by a password reset.", "operationId": "com.atproto.temp.revokeAccountCredentials", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "account" ], "properties": { "account": { "type": "string", "format": "at-identifier" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.transferAccount": { "post": { "tags": [ "com.atproto.temp" ], "summary": "Transfer an account. NOTE: temporary method, necessarily how account migration will be implemented.", "operationId": "com.atproto.temp.transferAccount", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "handle", "did", "plcOp" ], "properties": { "handle": { "type": "string", "format": "handle" }, "did": { "type": "string", "format": "did" }, "plcOp": {} } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "accessJwt", "refreshJwt", "handle", "did" ], "properties": { "accessJwt": { "type": "string" }, "refreshJwt": { "type": "string" }, "handle": { "type": "string", "format": "handle" }, "did": { "type": "string", "format": "did" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidHandle" }, { "const": "InvalidPassword" }, { "const": "InvalidInviteCode" }, { "const": "HandleNotAvailable" }, { "const": "UnsupportedDomain" }, { "const": "UnresolvableDid" }, { "const": "IncompatibleDidDoc" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/com.atproto.temp.upgradeRepoVersion": { "post": { "tags": [ "com.atproto.temp" ], "summary": "Upgrade a repo to v3", "operationId": "com.atproto.temp.upgradeRepoVersion", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" }, "force": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.communication.createTemplate": { "post": { "tags": [ "tools.ozone.communication" ], "summary": "Administrative action to create a new, re-usable communication (email for now) template.", "operationId": "tools.ozone.communication.createTemplate", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "subject", "contentMarkdown", "name" ], "properties": { "name": { "type": "string", "description": "Name of the template." }, "contentMarkdown": { "type": "string", "description": "Content of the template, markdown supported, can contain variable placeholders." }, "subject": { "type": "string", "description": "Subject of the message, used in emails." }, "lang": { "type": "string", "description": "Message language.", "format": "language" }, "createdBy": { "type": "string", "description": "DID of the user who is creating the template.", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.communication.defs.templateView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "DuplicateTemplateName" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.communication.deleteTemplate": { "post": { "tags": [ "tools.ozone.communication" ], "summary": "Delete a communication template.", "operationId": "tools.ozone.communication.deleteTemplate", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.communication.listTemplates": { "get": { "tags": [ "tools.ozone.communication" ], "summary": "Get list of all communication templates.", "operationId": "tools.ozone.communication.listTemplates", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "communicationTemplates" ], "properties": { "communicationTemplates": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.communication.defs.templateView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.communication.updateTemplate": { "post": { "tags": [ "tools.ozone.communication" ], "summary": "Administrative action to update an existing communication template. Allows passing partial fields to patch specific fields only.", "operationId": "tools.ozone.communication.updateTemplate", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "description": "ID of the template to be updated." }, "name": { "type": "string", "description": "Name of the template." }, "lang": { "type": "string", "description": "Message language.", "format": "language" }, "contentMarkdown": { "type": "string", "description": "Content of the template, markdown supported, can contain variable placeholders." }, "subject": { "type": "string", "description": "Subject of the message, used in emails." }, "updatedBy": { "type": "string", "description": "DID of the user who is updating the template.", "format": "did" }, "disabled": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.communication.defs.templateView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "DuplicateTemplateName" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.hosting.getAccountHistory": { "get": { "tags": [ "tools.ozone.hosting" ], "summary": "Get account history, e.g. log of updated email addresses or other identity information.", "operationId": "tools.ozone.hosting.getAccountHistory", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "required": true, "schema": { "type": "string", "format": "did" } }, { "name": "events", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "accountCreated", "emailUpdated", "emailConfirmed", "passwordUpdated", "handleUpdated" ] } } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "events" ], "properties": { "cursor": { "type": "string" }, "events": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.hosting.getAccountHistory.event" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.cancelScheduledActions": { "post": { "tags": [ "tools.ozone.moderation" ], "summary": "Cancel all pending scheduled moderation actions for specified subjects", "operationId": "tools.ozone.moderation.cancelScheduledActions", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "subjects" ], "properties": { "subjects": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 100 }, "comment": { "type": "string", "description": "Optional comment describing the reason for cancellation" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.moderation.cancelScheduledActions.cancellationResults" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.emitEvent": { "post": { "tags": [ "tools.ozone.moderation" ], "summary": "Take a moderation action on an actor.", "operationId": "tools.ozone.moderation.emitEvent", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "event", "subject", "createdBy" ], "properties": { "event": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventTakedown" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventAcknowledge" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventEscalate" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventComment" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventLabel" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventReport" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventMute" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventUnmute" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventMuteReporter" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventUnmuteReporter" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventReverseTakedown" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventResolveAppeal" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventEmail" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventDivert" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventTag" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.accountEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.identityEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventPriorityScore" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.ageAssuranceEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.ageAssuranceOverrideEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.revokeAccountCredentialsEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.scheduleTakedownEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.cancelScheduledTakedownEvent" } ] }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } ] }, "subjectBlobCids": { "type": "array", "items": { "type": "string", "format": "cid" } }, "createdBy": { "type": "string", "format": "did" }, "modTool": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modTool" }, "externalId": { "type": "string", "description": "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." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "SubjectHasAction" }, { "const": "DuplicateExternalId" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getAccountTimeline": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get timeline of all available events of an account. This includes moderation events, account history and did history.", "operationId": "tools.ozone.moderation.getAccountTimeline", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "required": true, "schema": { "type": "string", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "timeline" ], "properties": { "timeline": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.getAccountTimeline.timelineItem" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RepoNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getEvent": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get details about a moderation event.", "operationId": "tools.ozone.moderation.getEvent", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getRecord": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get details about a record.", "operationId": "tools.ozone.moderation.getRecord", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uri", "in": "query", "required": true, "schema": { "type": "string", "format": "at-uri" } }, { "name": "cid", "in": "query", "required": false, "schema": { "type": "string", "format": "cid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RecordNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getRecords": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get details about some records.", "operationId": "tools.ozone.moderation.getRecords", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "uris", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "at-uri" }, "maxItems": 100 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "records" ], "properties": { "records": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordViewDetail" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordViewNotFound" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getRepo": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get details about a repository.", "operationId": "tools.ozone.moderation.getRepo", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "required": true, "schema": { "type": "string", "format": "did" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewDetail" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RepoNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getReporterStats": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get reporter stats for a list of users.", "operationId": "tools.ozone.moderation.getReporterStats", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "dids", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 100 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "stats" ], "properties": { "stats": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.reporterStats" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getRepos": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get details about some repositories.", "operationId": "tools.ozone.moderation.getRepos", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "dids", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 100 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "repos" ], "properties": { "repos": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewDetail" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewNotFound" } ] } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.getSubjects": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Get details about subjects.", "operationId": "tools.ozone.moderation.getSubjects", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "subjects", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string" }, "maxItems": 100 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subjects" ], "properties": { "subjects": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.subjectView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.listScheduledActions": { "post": { "tags": [ "tools.ozone.moderation" ], "summary": "List scheduled moderation actions with optional filtering", "operationId": "tools.ozone.moderation.listScheduledActions", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "statuses" ], "properties": { "startsAfter": { "type": "string", "description": "Filter actions scheduled to execute after this time", "format": "date-time" }, "endsBefore": { "type": "string", "description": "Filter actions scheduled to execute before this time", "format": "date-time" }, "subjects": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 100 }, "statuses": { "type": "array", "items": { "type": "string", "enum": [ "pending", "executed", "cancelled", "failed" ] } }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 }, "cursor": { "type": "string", "description": "Cursor for pagination" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "actions" ], "properties": { "actions": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.scheduledActionView" } }, "cursor": { "type": "string", "description": "Cursor for next page of results" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.queryEvents": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "List moderation events related to a subject.", "operationId": "tools.ozone.moderation.queryEvents", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "types", "in": "query", "description": "The types of events (fully qualified string in the format of tools.ozone.moderation.defs#modEvent) to filter by. If not specified, all events are returned.", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "createdBy", "in": "query", "required": false, "schema": { "type": "string", "format": "did" } }, { "name": "sortDirection", "in": "query", "description": "Sort direction for the events. Defaults to descending order of created at timestamp.", "required": false, "schema": { "type": "string", "description": "Sort direction for the events. Defaults to descending order of created at timestamp.", "default": "desc" } }, { "name": "createdAfter", "in": "query", "description": "Retrieve events created after a given timestamp", "required": false, "schema": { "type": "string", "description": "Retrieve events created after a given timestamp", "format": "date-time" } }, { "name": "createdBefore", "in": "query", "description": "Retrieve events created before a given timestamp", "required": false, "schema": { "type": "string", "description": "Retrieve events created before a given timestamp", "format": "date-time" } }, { "name": "subject", "in": "query", "required": false, "schema": { "type": "string", "format": "uri" } }, { "name": "collections", "in": "query", "description": "If specified, only events where the subject belongs to the given collections will be returned. When subjectType is set to 'account', this will be ignored.", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "nsid" }, "maxItems": 20 } }, { "name": "subjectType", "in": "query", "description": "If specified, only events where the subject is of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.", "required": false, "schema": { "type": "string", "description": "If specified, only events where the subject is of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.", "enum": [ "account", "record" ] } }, { "name": "includeAllUserRecords", "in": "query", "description": "If true, events on all record types (posts, lists, profile etc.) or records from given 'collections' param, owned by the did are returned.", "required": false, "schema": { "type": "boolean", "description": "If true, events on all record types (posts, lists, profile etc.) or records from given 'collections' param, owned by the did are returned." } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "hasComment", "in": "query", "description": "If true, only events with comments are returned", "required": false, "schema": { "type": "boolean", "description": "If true, only events with comments are returned" } }, { "name": "comment", "in": "query", "description": "If specified, only events with comments containing the keyword are returned. Apply || separator to use multiple keywords and match using OR condition.", "required": false, "schema": { "type": "string", "description": "If specified, only events with comments containing the keyword are returned. Apply || separator to use multiple keywords and match using OR condition." } }, { "name": "addedLabels", "in": "query", "description": "If specified, only events where all of these labels were added are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "removedLabels", "in": "query", "description": "If specified, only events where all of these labels were removed are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "addedTags", "in": "query", "description": "If specified, only events where all of these tags were added are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "removedTags", "in": "query", "description": "If specified, only events where all of these tags were removed are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "reportTypes", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "policies", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string", "description": "If specified, only events where the action policies match any of the given policies are returned" } } }, { "name": "modTool", "in": "query", "description": "If specified, only events where the modTool name matches any of the given values are returned", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "batchId", "in": "query", "description": "If specified, only events where the batchId matches the given value are returned", "required": false, "schema": { "type": "string", "description": "If specified, only events where the batchId matches the given value are returned" } }, { "name": "ageAssuranceState", "in": "query", "description": "If specified, only events where the age assurance state matches the given value are returned", "required": false, "schema": { "type": "string", "description": "If specified, only events where the age assurance state matches the given value are returned", "enum": [ "pending", "assured", "unknown", "reset", "blocked" ] } }, { "name": "withStrike", "in": "query", "description": "If specified, only events where strikeCount value is set are returned.", "required": false, "schema": { "type": "boolean", "description": "If specified, only events where strikeCount value is set are returned." } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "events" ], "properties": { "cursor": { "type": "string" }, "events": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.queryStatuses": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "View moderation statuses of subjects (record or repo).", "operationId": "tools.ozone.moderation.queryStatuses", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "queueCount", "in": "query", "description": "Number of queues being used by moderators. Subjects will be split among all queues.", "required": false, "schema": { "type": "integer" } }, { "name": "queueIndex", "in": "query", "description": "Index of the queue to fetch subjects from. Works only when queueCount value is specified.", "required": false, "schema": { "type": "integer" } }, { "name": "queueSeed", "in": "query", "description": "A seeder to shuffle/balance the queue items.", "required": false, "schema": { "type": "string", "description": "A seeder to shuffle/balance the queue items." } }, { "name": "includeAllUserRecords", "in": "query", "description": "All subjects, or subjects from given 'collections' param, belonging to the account specified in the 'subject' param will be returned.", "required": false, "schema": { "type": "boolean", "description": "All subjects, or subjects from given 'collections' param, belonging to the account specified in the 'subject' param will be returned." } }, { "name": "subject", "in": "query", "description": "The subject to get the status for.", "required": false, "schema": { "type": "string", "description": "The subject to get the status for.", "format": "uri" } }, { "name": "comment", "in": "query", "description": "Search subjects by keyword from comments", "required": false, "schema": { "type": "string", "description": "Search subjects by keyword from comments" } }, { "name": "reportedAfter", "in": "query", "description": "Search subjects reported after a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reported after a given timestamp", "format": "date-time" } }, { "name": "reportedBefore", "in": "query", "description": "Search subjects reported before a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reported before a given timestamp", "format": "date-time" } }, { "name": "reviewedAfter", "in": "query", "description": "Search subjects reviewed after a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reviewed after a given timestamp", "format": "date-time" } }, { "name": "hostingDeletedAfter", "in": "query", "description": "Search subjects where the associated record/account was deleted after a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects where the associated record/account was deleted after a given timestamp", "format": "date-time" } }, { "name": "hostingDeletedBefore", "in": "query", "description": "Search subjects where the associated record/account was deleted before a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects where the associated record/account was deleted before a given timestamp", "format": "date-time" } }, { "name": "hostingUpdatedAfter", "in": "query", "description": "Search subjects where the associated record/account was updated after a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects where the associated record/account was updated after a given timestamp", "format": "date-time" } }, { "name": "hostingUpdatedBefore", "in": "query", "description": "Search subjects where the associated record/account was updated before a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects where the associated record/account was updated before a given timestamp", "format": "date-time" } }, { "name": "hostingStatuses", "in": "query", "description": "Search subjects by the status of the associated record/account", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "reviewedBefore", "in": "query", "description": "Search subjects reviewed before a given timestamp", "required": false, "schema": { "type": "string", "description": "Search subjects reviewed before a given timestamp", "format": "date-time" } }, { "name": "includeMuted", "in": "query", "description": "By default, we don't include muted subjects in the results. Set this to true to include them.", "required": false, "schema": { "type": "boolean", "description": "By default, we don't include muted subjects in the results. Set this to true to include them." } }, { "name": "onlyMuted", "in": "query", "description": "When set to true, only muted subjects and reporters will be returned.", "required": false, "schema": { "type": "boolean", "description": "When set to true, only muted subjects and reporters will be returned." } }, { "name": "reviewState", "in": "query", "description": "Specify when fetching subjects in a certain state", "required": false, "schema": { "type": "string", "description": "Specify when fetching subjects in a certain state", "enum": [ "tools.ozone.moderation.defs#reviewOpen", "tools.ozone.moderation.defs#reviewClosed", "tools.ozone.moderation.defs#reviewEscalated", "tools.ozone.moderation.defs#reviewNone" ] } }, { "name": "ignoreSubjects", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "uri" } } }, { "name": "lastReviewedBy", "in": "query", "description": "Get all subject statuses that were reviewed by a specific moderator", "required": false, "schema": { "type": "string", "description": "Get all subject statuses that were reviewed by a specific moderator", "format": "did" } }, { "name": "sortField", "in": "query", "required": false, "schema": { "type": "string", "default": "lastReportedAt" } }, { "name": "sortDirection", "in": "query", "required": false, "schema": { "type": "string", "default": "desc" } }, { "name": "takendown", "in": "query", "description": "Get subjects that were taken down", "required": false, "schema": { "type": "boolean", "description": "Get subjects that were taken down" } }, { "name": "appealed", "in": "query", "description": "Get subjects in unresolved appealed status", "required": false, "schema": { "type": "boolean", "description": "Get subjects in unresolved appealed status" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "tags", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string", "description": "Items in this array are applied with OR filters. To apply AND filter, put all tags in the same string and separate using && characters" }, "maxItems": 25 } }, { "name": "excludeTags", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "collections", "in": "query", "description": "If specified, subjects belonging to the given collections will be returned. When subjectType is set to 'account', this will be ignored.", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "nsid" }, "maxItems": 20 } }, { "name": "subjectType", "in": "query", "description": "If specified, subjects of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.", "required": false, "schema": { "type": "string", "description": "If specified, subjects of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.", "enum": [ "account", "record" ] } }, { "name": "minAccountSuspendCount", "in": "query", "description": "If specified, only subjects that belong to an account that has at least this many suspensions will be returned.", "required": false, "schema": { "type": "integer" } }, { "name": "minReportedRecordsCount", "in": "query", "description": "If specified, only subjects that belong to an account that has at least this many reported records will be returned.", "required": false, "schema": { "type": "integer" } }, { "name": "minTakendownRecordsCount", "in": "query", "description": "If specified, only subjects that belong to an account that has at least this many taken down records will be returned.", "required": false, "schema": { "type": "integer" } }, { "name": "minPriorityScore", "in": "query", "description": "If specified, only subjects that have priority score value above the given value will be returned.", "required": false, "schema": { "type": "integer", "minimum": 0, "maximum": 100 } }, { "name": "minStrikeCount", "in": "query", "description": "If specified, only subjects that belong to an account that has at least this many active strikes will be returned.", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "ageAssuranceState", "in": "query", "description": "If specified, only subjects with the given age assurance state will be returned.", "required": false, "schema": { "type": "string", "description": "If specified, only subjects with the given age assurance state will be returned.", "enum": [ "pending", "assured", "unknown", "reset", "blocked" ] } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "subjectStatuses" ], "properties": { "cursor": { "type": "string" }, "subjectStatuses": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.subjectStatusView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.scheduleAction": { "post": { "tags": [ "tools.ozone.moderation" ], "summary": "Schedule a moderation action to be executed at a future time", "operationId": "tools.ozone.moderation.scheduleAction", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "action", "subjects", "createdBy", "scheduling" ], "properties": { "action": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.scheduleAction.takedown" } ] }, "subjects": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 100 }, "createdBy": { "type": "string", "format": "did" }, "scheduling": { "$ref": "#/components/schemas/tools.ozone.moderation.scheduleAction.schedulingConfig" }, "modTool": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modTool" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.moderation.scheduleAction.scheduledActionResults" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.moderation.searchRepos": { "get": { "tags": [ "tools.ozone.moderation" ], "summary": "Find repositories based on a search term.", "operationId": "tools.ozone.moderation.searchRepos", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "term", "in": "query", "description": "DEPRECATED: use 'q' instead", "required": false, "schema": { "type": "string", "description": "DEPRECATED: use 'q' instead" } }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "repos" ], "properties": { "cursor": { "type": "string" }, "repos": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.safelink.addRule": { "post": { "tags": [ "tools.ozone.safelink" ], "summary": "Add a new URL safety rule", "operationId": "tools.ozone.safelink.addRule", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "url", "pattern", "action", "reason" ], "properties": { "url": { "type": "string", "description": "The URL or domain to apply the rule to" }, "pattern": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.patternType" }, "action": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.actionType" }, "reason": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.reasonType" }, "comment": { "type": "string", "description": "Optional comment about the decision" }, "createdBy": { "type": "string", "description": "Author DID. Only respected when using admin auth", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.event" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "InvalidUrl" }, { "const": "RuleAlreadyExists" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.safelink.queryEvents": { "post": { "tags": [ "tools.ozone.safelink" ], "summary": "Query URL safety audit events", "operationId": "tools.ozone.safelink.queryEvents", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "cursor": { "type": "string", "description": "Cursor for pagination" }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 }, "urls": { "type": "array", "items": { "type": "string" } }, "patternType": { "type": "string", "description": "Filter by pattern type" }, "sortDirection": { "type": "string", "description": "Sort direction", "default": "desc", "enum": [ "asc", "desc" ] } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "events" ], "properties": { "cursor": { "type": "string", "description": "Next cursor for pagination. Only present if there are more results." }, "events": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.event" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.safelink.queryRules": { "post": { "tags": [ "tools.ozone.safelink" ], "summary": "Query URL safety rules", "operationId": "tools.ozone.safelink.queryRules", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "cursor": { "type": "string", "description": "Cursor for pagination" }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 }, "urls": { "type": "array", "items": { "type": "string" } }, "patternType": { "type": "string", "description": "Filter by pattern type" }, "actions": { "type": "array", "items": { "type": "string" } }, "reason": { "type": "string", "description": "Filter by reason type" }, "createdBy": { "type": "string", "description": "Filter by rule creator", "format": "did" }, "sortDirection": { "type": "string", "description": "Sort direction", "default": "desc", "enum": [ "asc", "desc" ] } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "rules" ], "properties": { "cursor": { "type": "string", "description": "Next cursor for pagination. Only present if there are more results." }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.urlRule" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.safelink.removeRule": { "post": { "tags": [ "tools.ozone.safelink" ], "summary": "Remove an existing URL safety rule", "operationId": "tools.ozone.safelink.removeRule", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "url", "pattern" ], "properties": { "url": { "type": "string", "description": "The URL or domain to remove the rule for" }, "pattern": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.patternType" }, "comment": { "type": "string", "description": "Optional comment about why the rule is being removed" }, "createdBy": { "type": "string", "description": "Optional DID of the user. Only respected when using admin auth.", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.event" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RuleNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.safelink.updateRule": { "post": { "tags": [ "tools.ozone.safelink" ], "summary": "Update an existing URL safety rule", "operationId": "tools.ozone.safelink.updateRule", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "url", "pattern", "action", "reason" ], "properties": { "url": { "type": "string", "description": "The URL or domain to update the rule for" }, "pattern": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.patternType" }, "action": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.actionType" }, "reason": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.reasonType" }, "comment": { "type": "string", "description": "Optional comment about the update" }, "createdBy": { "type": "string", "description": "Optional DID to credit as the creator. Only respected for admin_token authentication.", "format": "did" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.event" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "RuleNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.server.getConfig": { "get": { "tags": [ "tools.ozone.server" ], "summary": "Get details about ozone's server configuration.", "operationId": "tools.ozone.server.getConfig", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "appview": { "$ref": "#/components/schemas/tools.ozone.server.getConfig.serviceConfig" }, "pds": { "$ref": "#/components/schemas/tools.ozone.server.getConfig.serviceConfig" }, "blobDivert": { "$ref": "#/components/schemas/tools.ozone.server.getConfig.serviceConfig" }, "chat": { "$ref": "#/components/schemas/tools.ozone.server.getConfig.serviceConfig" }, "viewer": { "$ref": "#/components/schemas/tools.ozone.server.getConfig.viewerConfig" }, "verifierDid": { "type": "string", "description": "The did of the verifier used for verification.", "format": "did" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.set.addValues": { "post": { "tags": [ "tools.ozone.set" ], "summary": "Add values to a specific set. Attempting to add values to a set that does not exist will result in an error.", "operationId": "tools.ozone.set.addValues", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name", "values" ], "properties": { "name": { "type": "string", "description": "Name of the set to add values to" }, "values": { "type": "array", "items": { "type": "string" }, "maxItems": 1000 } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.set.deleteSet": { "post": { "tags": [ "tools.ozone.set" ], "summary": "Delete an entire set. Attempting to delete a set that does not exist will result in an error.", "operationId": "tools.ozone.set.deleteSet", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "Name of the set to delete" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "SetNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.set.deleteValues": { "post": { "tags": [ "tools.ozone.set" ], "summary": "Delete values from a specific set. Attempting to delete values that are not in the set will not result in an error", "operationId": "tools.ozone.set.deleteValues", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name", "values" ], "properties": { "name": { "type": "string", "description": "Name of the set to delete values from" }, "values": { "type": "array", "items": { "type": "string" } } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "SetNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.set.getValues": { "get": { "tags": [ "tools.ozone.set" ], "summary": "Get a specific set and its values", "operationId": "tools.ozone.set.getValues", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 100 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "set", "values" ], "properties": { "set": { "$ref": "#/components/schemas/tools.ozone.set.defs.setView" }, "values": { "type": "array", "items": { "type": "string" } }, "cursor": { "type": "string" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "SetNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.set.querySets": { "get": { "tags": [ "tools.ozone.set" ], "summary": "Query available sets", "operationId": "tools.ozone.set.querySets", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "namePrefix", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "sortBy", "in": "query", "required": false, "schema": { "type": "string", "default": "name" } }, { "name": "sortDirection", "in": "query", "description": "Defaults to ascending order of name field.", "required": false, "schema": { "type": "string", "description": "Defaults to ascending order of name field.", "default": "asc" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "sets" ], "properties": { "sets": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.set.defs.setView" } }, "cursor": { "type": "string" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.set.upsertSet": { "post": { "tags": [ "tools.ozone.set" ], "summary": "Create or update set metadata", "operationId": "tools.ozone.set.upsertSet", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.set.defs.set" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.set.defs.setView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.setting.listOptions": { "get": { "tags": [ "tools.ozone.setting" ], "summary": "List settings with optional filtering", "operationId": "tools.ozone.setting.listOptions", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "scope", "in": "query", "required": false, "schema": { "type": "string", "default": "instance", "enum": [ "instance", "personal" ] } }, { "name": "prefix", "in": "query", "description": "Filter keys by prefix", "required": false, "schema": { "type": "string", "description": "Filter keys by prefix" } }, { "name": "keys", "in": "query", "description": "Filter for only the specified keys. Ignored if prefix is provided", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "nsid" }, "maxItems": 100 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "options" ], "properties": { "cursor": { "type": "string" }, "options": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.setting.defs.option" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.setting.removeOptions": { "post": { "tags": [ "tools.ozone.setting" ], "summary": "Delete settings by key", "operationId": "tools.ozone.setting.removeOptions", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "keys", "scope" ], "properties": { "keys": { "type": "array", "items": { "type": "string", "format": "nsid" }, "maxItems": 200 }, "scope": { "type": "string", "enum": [ "instance", "personal" ] } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.setting.upsertOption": { "post": { "tags": [ "tools.ozone.setting" ], "summary": "Create or update setting option", "operationId": "tools.ozone.setting.upsertOption", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "key", "scope", "value" ], "properties": { "key": { "type": "string", "format": "nsid" }, "scope": { "type": "string", "enum": [ "instance", "personal" ] }, "value": {}, "description": { "type": "string", "maxLength": 2000 }, "managerRole": { "type": "string", "enum": [ "tools.ozone.team.defs#roleModerator", "tools.ozone.team.defs#roleTriage", "tools.ozone.team.defs#roleVerifier", "tools.ozone.team.defs#roleAdmin" ] } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "option" ], "properties": { "option": { "$ref": "#/components/schemas/tools.ozone.setting.defs.option" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.signature.findCorrelation": { "get": { "tags": [ "tools.ozone.signature" ], "summary": "Find all correlated threat signatures between 2 or more accounts.", "operationId": "tools.ozone.signature.findCorrelation", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "dids", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string", "format": "did" } } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "details" ], "properties": { "details": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.signature.defs.sigDetail" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.signature.findRelatedAccounts": { "get": { "tags": [ "tools.ozone.signature" ], "summary": "Get accounts that share some matching threat signatures with the root account.", "operationId": "tools.ozone.signature.findRelatedAccounts", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "required": true, "schema": { "type": "string", "format": "did" } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "accounts" ], "properties": { "cursor": { "type": "string" }, "accounts": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.signature.findRelatedAccounts.relatedAccount" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.signature.searchAccounts": { "get": { "tags": [ "tools.ozone.signature" ], "summary": "Search for accounts that match one or more threat signature values.", "operationId": "tools.ozone.signature.searchAccounts", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "values", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "accounts" ], "properties": { "cursor": { "type": "string" }, "accounts": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.accountView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.team.addMember": { "post": { "tags": [ "tools.ozone.team" ], "summary": "Add a member to the ozone team. Requires admin role.", "operationId": "tools.ozone.team.addMember", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did", "role" ], "properties": { "did": { "type": "string", "format": "did" }, "role": { "type": "string", "enum": [ "tools.ozone.team.defs#roleAdmin", "tools.ozone.team.defs#roleModerator", "tools.ozone.team.defs#roleVerifier", "tools.ozone.team.defs#roleTriage" ] } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.team.defs.member" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "MemberAlreadyExists" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.team.deleteMember": { "post": { "tags": [ "tools.ozone.team" ], "summary": "Delete a member from ozone team. Requires admin role.", "operationId": "tools.ozone.team.deleteMember", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "MemberNotFound" }, { "const": "CannotDeleteSelf" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.team.listMembers": { "get": { "tags": [ "tools.ozone.team" ], "summary": "List all members with access to the ozone service.", "operationId": "tools.ozone.team.listMembers", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "q", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "disabled", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "roles", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "cursor", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "members" ], "properties": { "cursor": { "type": "string" }, "members": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.team.defs.member" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.team.updateMember": { "post": { "tags": [ "tools.ozone.team" ], "summary": "Update a member in the ozone service. Requires admin role.", "operationId": "tools.ozone.team.updateMember", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" }, "disabled": { "type": "boolean" }, "role": { "type": "string", "enum": [ "tools.ozone.team.defs#roleAdmin", "tools.ozone.team.defs#roleModerator", "tools.ozone.team.defs#roleVerifier", "tools.ozone.team.defs#roleTriage" ] } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tools.ozone.team.defs.member" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" }, { "const": "MemberNotFound" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.verification.grantVerifications": { "post": { "tags": [ "tools.ozone.verification" ], "summary": "Grant verifications to multiple subjects. Allows batch processing of up to 100 verifications at once.", "operationId": "tools.ozone.verification.grantVerifications", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "verifications" ], "properties": { "verifications": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.verification.grantVerifications.verificationInput" }, "maxItems": 100 } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "verifications", "failedVerifications" ], "properties": { "verifications": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.verification.defs.verificationView" } }, "failedVerifications": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.verification.grantVerifications.grantError" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.verification.listVerifications": { "get": { "tags": [ "tools.ozone.verification" ], "summary": "List verifications", "operationId": "tools.ozone.verification.listVerifications", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "cursor", "in": "query", "description": "Pagination cursor", "required": false, "schema": { "type": "string", "description": "Pagination cursor" } }, { "name": "limit", "in": "query", "description": "Maximum number of results to return", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } }, { "name": "createdAfter", "in": "query", "description": "Filter to verifications created after this timestamp", "required": false, "schema": { "type": "string", "description": "Filter to verifications created after this timestamp", "format": "date-time" } }, { "name": "createdBefore", "in": "query", "description": "Filter to verifications created before this timestamp", "required": false, "schema": { "type": "string", "description": "Filter to verifications created before this timestamp", "format": "date-time" } }, { "name": "issuers", "in": "query", "description": "Filter to verifications from specific issuers", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 100 } }, { "name": "subjects", "in": "query", "description": "Filter to specific verified DIDs", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "did" }, "maxItems": 100 } }, { "name": "sortDirection", "in": "query", "description": "Sort direction for creation date", "required": false, "schema": { "type": "string", "description": "Sort direction for creation date", "default": "desc" } }, { "name": "isRevoked", "in": "query", "description": "Filter to verifications that are revoked or not. By default, includes both.", "required": false, "schema": { "type": "boolean", "description": "Filter to verifications that are revoked or not. By default, includes both." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "verifications" ], "properties": { "cursor": { "type": "string" }, "verifications": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.verification.defs.verificationView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/tools.ozone.verification.revokeVerifications": { "post": { "tags": [ "tools.ozone.verification" ], "summary": "Revoke previously granted verifications in batches of up to 100.", "operationId": "tools.ozone.verification.revokeVerifications", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "uris" ], "properties": { "uris": { "type": "array", "items": { "type": "string", "description": "The AT-URI of the verification record to revoke.", "format": "at-uri" }, "maxItems": 100 }, "revokeReason": { "type": "string", "description": "Reason for revoking the verification. This is optional and can be omitted if not needed.", "maxLength": 1000 } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "required": [ "revokedVerifications", "failedRevocations" ], "properties": { "revokedVerifications": { "type": "array", "items": { "type": "string", "format": "at-uri" } }, "failedRevocations": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.verification.revokeVerifications.revokeError" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": [ "error", "message" ], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } } }, "components": { "schemas": { "app.bsky.actor.defs.profileViewBasic": { "type": "object", "required": [ "did", "handle" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "displayName": { "type": "string", "maxLength": 640 }, "pronouns": { "type": "string" }, "avatar": { "type": "string", "format": "uri" }, "associated": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileAssociated" }, "viewer": { "$ref": "#/components/schemas/app.bsky.actor.defs.viewerState" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "createdAt": { "type": "string", "format": "date-time" }, "verification": { "$ref": "#/components/schemas/app.bsky.actor.defs.verificationState" }, "status": { "$ref": "#/components/schemas/app.bsky.actor.defs.statusView" }, "debug": {} } }, "app.bsky.actor.defs.profileView": { "type": "object", "required": [ "did", "handle" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "displayName": { "type": "string", "maxLength": 640 }, "pronouns": { "type": "string" }, "description": { "type": "string", "maxLength": 2560 }, "avatar": { "type": "string", "format": "uri" }, "associated": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileAssociated" }, "indexedAt": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" }, "viewer": { "$ref": "#/components/schemas/app.bsky.actor.defs.viewerState" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "verification": { "$ref": "#/components/schemas/app.bsky.actor.defs.verificationState" }, "status": { "$ref": "#/components/schemas/app.bsky.actor.defs.statusView" }, "debug": {} } }, "app.bsky.actor.defs.profileViewDetailed": { "type": "object", "required": [ "did", "handle" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "displayName": { "type": "string", "maxLength": 640 }, "description": { "type": "string", "maxLength": 2560 }, "pronouns": { "type": "string" }, "website": { "type": "string", "format": "uri" }, "avatar": { "type": "string", "format": "uri" }, "banner": { "type": "string", "format": "uri" }, "followersCount": { "type": "integer" }, "followsCount": { "type": "integer" }, "postsCount": { "type": "integer" }, "associated": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileAssociated" }, "joinedViaStarterPack": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackViewBasic" }, "indexedAt": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" }, "viewer": { "$ref": "#/components/schemas/app.bsky.actor.defs.viewerState" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "pinnedPost": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "verification": { "$ref": "#/components/schemas/app.bsky.actor.defs.verificationState" }, "status": { "$ref": "#/components/schemas/app.bsky.actor.defs.statusView" }, "debug": {} } }, "app.bsky.actor.defs.profileAssociated": { "type": "object", "properties": { "lists": { "type": "integer" }, "feedgens": { "type": "integer" }, "starterPacks": { "type": "integer" }, "labeler": { "type": "boolean" }, "chat": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileAssociatedChat" }, "activitySubscription": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileAssociatedActivitySubscription" } } }, "app.bsky.actor.defs.profileAssociatedChat": { "type": "object", "required": [ "allowIncoming" ], "properties": { "allowIncoming": { "type": "string", "enum": [ "all", "none", "following" ] } } }, "app.bsky.actor.defs.profileAssociatedActivitySubscription": { "type": "object", "required": [ "allowSubscriptions" ], "properties": { "allowSubscriptions": { "type": "string", "enum": [ "followers", "mutuals", "none" ] } } }, "app.bsky.actor.defs.viewerState": { "type": "object", "description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.", "properties": { "muted": { "type": "boolean" }, "mutedByList": { "$ref": "#/components/schemas/app.bsky.graph.defs.listViewBasic" }, "blockedBy": { "type": "boolean" }, "blocking": { "type": "string", "format": "at-uri" }, "blockingByList": { "$ref": "#/components/schemas/app.bsky.graph.defs.listViewBasic" }, "following": { "type": "string", "format": "at-uri" }, "followedBy": { "type": "string", "format": "at-uri" }, "knownFollowers": { "$ref": "#/components/schemas/app.bsky.actor.defs.knownFollowers" }, "activitySubscription": { "$ref": "#/components/schemas/app.bsky.notification.defs.activitySubscription" } } }, "app.bsky.actor.defs.knownFollowers": { "type": "object", "description": "The subject's followers whom you also follow", "required": [ "count", "followers" ], "properties": { "count": { "type": "integer" }, "followers": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" }, "maxItems": 5 } } }, "app.bsky.actor.defs.verificationState": { "type": "object", "description": "Represents the verification information about the user this object is attached to.", "required": [ "verifications", "verifiedStatus", "trustedVerifierStatus" ], "properties": { "verifications": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.verificationView" } }, "verifiedStatus": { "type": "string", "description": "The user's status as a verified account.", "enum": [ "valid", "invalid", "none" ] }, "trustedVerifierStatus": { "type": "string", "description": "The user's status as a trusted verifier.", "enum": [ "valid", "invalid", "none" ] } } }, "app.bsky.actor.defs.verificationView": { "type": "object", "description": "An individual verification for an associated subject.", "required": [ "issuer", "uri", "isValid", "createdAt" ], "properties": { "issuer": { "type": "string", "description": "The user who issued this verification.", "format": "did" }, "uri": { "type": "string", "description": "The AT-URI of the verification record.", "format": "at-uri" }, "isValid": { "type": "boolean", "description": "True if the verification passes validation, otherwise false." }, "createdAt": { "type": "string", "description": "Timestamp when the verification was created.", "format": "date-time" } } }, "app.bsky.actor.defs.preferences": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.actor.defs.adultContentPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.contentLabelPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.savedFeedsPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.savedFeedsPrefV2" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.personalDetailsPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.declaredAgePref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.feedViewPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.threadViewPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.interestsPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.mutedWordsPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.hiddenPostsPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.bskyAppStatePref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.labelersPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.postInteractionSettingsPref" }, { "$ref": "#/components/schemas/app.bsky.actor.defs.verificationPrefs" } ] } }, "app.bsky.actor.defs.adultContentPref": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } } }, "app.bsky.actor.defs.contentLabelPref": { "type": "object", "required": [ "label", "visibility" ], "properties": { "labelerDid": { "type": "string", "description": "Which labeler does this preference apply to? If undefined, applies globally.", "format": "did" }, "label": { "type": "string" }, "visibility": { "type": "string", "enum": [ "ignore", "show", "warn", "hide" ] } } }, "app.bsky.actor.defs.savedFeed": { "type": "object", "required": [ "id", "type", "value", "pinned" ], "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "feed", "list", "timeline" ] }, "value": { "type": "string" }, "pinned": { "type": "boolean" } } }, "app.bsky.actor.defs.savedFeedsPrefV2": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.savedFeed" } } } }, "app.bsky.actor.defs.savedFeedsPref": { "type": "object", "required": [ "pinned", "saved" ], "properties": { "pinned": { "type": "array", "items": { "type": "string", "format": "at-uri" } }, "saved": { "type": "array", "items": { "type": "string", "format": "at-uri" } }, "timelineIndex": { "type": "integer" } } }, "app.bsky.actor.defs.personalDetailsPref": { "type": "object", "properties": { "birthDate": { "type": "string", "description": "The birth date of account owner.", "format": "date-time" } } }, "app.bsky.actor.defs.declaredAgePref": { "type": "object", "description": "Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration.", "properties": { "isOverAge13": { "type": "boolean", "description": "Indicates if the user has declared that they are over 13 years of age." }, "isOverAge16": { "type": "boolean", "description": "Indicates if the user has declared that they are over 16 years of age." }, "isOverAge18": { "type": "boolean", "description": "Indicates if the user has declared that they are over 18 years of age." } } }, "app.bsky.actor.defs.feedViewPref": { "type": "object", "required": [ "feed" ], "properties": { "feed": { "type": "string", "description": "The URI of the feed, or an identifier which describes the feed." }, "hideReplies": { "type": "boolean", "description": "Hide replies in the feed." }, "hideRepliesByUnfollowed": { "type": "boolean", "description": "Hide replies in the feed if they are not by followed users.", "default": true }, "hideRepliesByLikeCount": { "type": "integer" }, "hideReposts": { "type": "boolean", "description": "Hide reposts in the feed." }, "hideQuotePosts": { "type": "boolean", "description": "Hide quote posts in the feed." } } }, "app.bsky.actor.defs.threadViewPref": { "type": "object", "properties": { "sort": { "type": "string", "description": "Sorting mode for threads.", "enum": [ "oldest", "newest", "most-likes", "random", "hotness" ] } } }, "app.bsky.actor.defs.interestsPref": { "type": "object", "required": [ "tags" ], "properties": { "tags": { "type": "array", "items": { "type": "string", "maxLength": 640 }, "maxItems": 100 } } }, "app.bsky.actor.defs.mutedWordTarget": { "type": "string", "maxLength": 640, "enum": [ "content", "tag" ] }, "app.bsky.actor.defs.mutedWord": { "type": "object", "description": "A word that the account owner has muted.", "required": [ "value", "targets" ], "properties": { "id": { "type": "string" }, "value": { "type": "string", "description": "The muted word itself.", "maxLength": 10000 }, "targets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.mutedWordTarget" } }, "actorTarget": { "type": "string", "description": "Groups of users to apply the muted word to. If undefined, applies to all users.", "default": "all", "enum": [ "all", "exclude-following" ] }, "expiresAt": { "type": "string", "description": "The date and time at which the muted word will expire and no longer be applied.", "format": "date-time" } } }, "app.bsky.actor.defs.mutedWordsPref": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.mutedWord" } } } }, "app.bsky.actor.defs.hiddenPostsPref": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "type": "string", "format": "at-uri" } } } }, "app.bsky.actor.defs.labelersPref": { "type": "object", "required": [ "labelers" ], "properties": { "labelers": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.labelerPrefItem" } } } }, "app.bsky.actor.defs.labelerPrefItem": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "app.bsky.actor.defs.bskyAppStatePref": { "type": "object", "description": "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.", "properties": { "activeProgressGuide": { "$ref": "#/components/schemas/app.bsky.actor.defs.bskyAppProgressGuide" }, "queuedNudges": { "type": "array", "items": { "type": "string", "maxLength": 100 }, "maxItems": 1000 }, "nuxs": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.nux" }, "maxItems": 100 } } }, "app.bsky.actor.defs.bskyAppProgressGuide": { "type": "object", "description": "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.", "required": [ "guide" ], "properties": { "guide": { "type": "string", "maxLength": 100 } } }, "app.bsky.actor.defs.nux": { "type": "object", "description": "A new user experiences (NUX) storage object", "required": [ "id", "completed" ], "properties": { "id": { "type": "string", "maxLength": 100 }, "completed": { "type": "boolean" }, "data": { "type": "string", "description": "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.", "maxLength": 3000 }, "expiresAt": { "type": "string", "description": "The date and time at which the NUX will expire and should be considered completed.", "format": "date-time" } } }, "app.bsky.actor.defs.verificationPrefs": { "type": "object", "description": "Preferences for how verified accounts appear in the app.", "required": [], "properties": { "hideBadges": { "type": "boolean", "description": "Hide the blue check badges for verified accounts and trusted verifiers." } } }, "app.bsky.actor.defs.postInteractionSettingsPref": { "type": "object", "description": "Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.", "required": [], "properties": { "threadgateAllowRules": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.threadgate.mentionRule" }, { "$ref": "#/components/schemas/app.bsky.feed.threadgate.followerRule" }, { "$ref": "#/components/schemas/app.bsky.feed.threadgate.followingRule" }, { "$ref": "#/components/schemas/app.bsky.feed.threadgate.listRule" } ] }, "maxItems": 5 }, "postgateEmbeddingRules": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.postgate.disableRule" } ] }, "maxItems": 5 } } }, "app.bsky.actor.defs.statusView": { "type": "object", "required": [ "status", "record" ], "properties": { "status": { "type": "string", "description": "The status for the account.", "enum": [ "app.bsky.actor.status#live" ] }, "record": {}, "embed": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.external.view" } ] }, "expiresAt": { "type": "string", "description": "The date when this status will expire. The application might choose to no longer return the status after expiration.", "format": "date-time" }, "isActive": { "type": "boolean", "description": "True if the status is not expired, false if it is expired. Only present if expiration was set." } } }, "app.bsky.actor.profile": { "type": "object", "properties": { "displayName": { "type": "string", "maxLength": 640 }, "description": { "type": "string", "description": "Free-form profile description text.", "maxLength": 2560 }, "pronouns": { "type": "string", "description": "Free-form pronouns text.", "maxLength": 200 }, "website": { "type": "string", "format": "uri" }, "avatar": { "type": "string", "format": "binary", "maxLength": 1000000 }, "banner": { "type": "string", "format": "binary", "maxLength": 1000000 }, "labels": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.label.defs.selfLabels" } ] }, "joinedViaStarterPack": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "pinnedPost": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.actor.status": { "type": "object", "required": [ "status", "createdAt" ], "properties": { "status": { "type": "string", "description": "The status for the account.", "enum": [ "app.bsky.actor.status#live" ] }, "embed": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.external" } ] }, "durationMinutes": { "type": "integer", "minimum": 1 }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.actor.status.live": { "type": "string", "format": "token", "description": "Advertises an account as currently offering live content." }, "app.bsky.ageassurance.defs.access": { "type": "string", "description": "The access level granted based on Age Assurance data we've processed.", "enum": [ "unknown", "none", "safe", "full" ] }, "app.bsky.ageassurance.defs.status": { "type": "string", "description": "The status of the Age Assurance process.", "enum": [ "unknown", "pending", "assured", "blocked" ] }, "app.bsky.ageassurance.defs.state": { "type": "object", "description": "The user's computed Age Assurance state.", "required": [ "status", "access" ], "properties": { "lastInitiatedAt": { "type": "string", "description": "The timestamp when this state was last updated.", "format": "date-time" }, "status": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.status" }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.stateMetadata": { "type": "object", "description": "Additional metadata needed to compute Age Assurance state client-side.", "required": [], "properties": { "accountCreatedAt": { "type": "string", "description": "The account creation timestamp.", "format": "date-time" } } }, "app.bsky.ageassurance.defs.config": { "type": "object", "required": [ "regions" ], "properties": { "regions": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegion" } } } }, "app.bsky.ageassurance.defs.configRegion": { "type": "object", "description": "The Age Assurance configuration for a specific region.", "required": [ "countryCode", "rules" ], "properties": { "countryCode": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code this configuration applies to." }, "regionCode": { "type": "string", "description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country." }, "rules": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegionRuleDefault" }, { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegionRuleIfDeclaredOverAge" }, { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegionRuleIfDeclaredUnderAge" }, { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegionRuleIfAssuredOverAge" }, { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegionRuleIfAssuredUnderAge" }, { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegionRuleIfAccountNewerThan" }, { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.configRegionRuleIfAccountOlderThan" } ] } } } }, "app.bsky.ageassurance.defs.configRegionRuleDefault": { "type": "object", "description": "Age Assurance rule that applies by default.", "required": [ "access" ], "properties": { "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.configRegionRuleIfDeclaredOverAge": { "type": "object", "description": "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age.", "required": [ "age", "access" ], "properties": { "age": { "type": "integer" }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.configRegionRuleIfDeclaredUnderAge": { "type": "object", "description": "Age Assurance rule that applies if the user has declared themselves under a certain age.", "required": [ "age", "access" ], "properties": { "age": { "type": "integer" }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.configRegionRuleIfAssuredOverAge": { "type": "object", "description": "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age.", "required": [ "age", "access" ], "properties": { "age": { "type": "integer" }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.configRegionRuleIfAssuredUnderAge": { "type": "object", "description": "Age Assurance rule that applies if the user has been assured to be under a certain age.", "required": [ "age", "access" ], "properties": { "age": { "type": "integer" }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.configRegionRuleIfAccountNewerThan": { "type": "object", "description": "Age Assurance rule that applies if the account is equal-to or newer than a certain date.", "required": [ "date", "access" ], "properties": { "date": { "type": "string", "description": "The date threshold as a datetime string.", "format": "date-time" }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.configRegionRuleIfAccountOlderThan": { "type": "object", "description": "Age Assurance rule that applies if the account is older than a certain date.", "required": [ "date", "access" ], "properties": { "date": { "type": "string", "description": "The date threshold as a datetime string.", "format": "date-time" }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" } } }, "app.bsky.ageassurance.defs.event": { "type": "object", "description": "Object used to store Age Assurance data in stash.", "required": [ "createdAt", "status", "access", "attemptId", "countryCode" ], "properties": { "createdAt": { "type": "string", "description": "The date and time of this write operation.", "format": "date-time" }, "attemptId": { "type": "string", "description": "The unique identifier for this instance of the Age Assurance flow, in UUID format." }, "status": { "type": "string", "description": "The status of the Age Assurance process.", "enum": [ "unknown", "pending", "assured", "blocked" ] }, "access": { "type": "string", "description": "The access level granted based on Age Assurance data we've processed.", "enum": [ "unknown", "none", "safe", "full" ] }, "countryCode": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow." }, "regionCode": { "type": "string", "description": "The ISO 3166-2 region code provided when beginning the Age Assurance flow." }, "email": { "type": "string", "description": "The email used for Age Assurance." }, "initIp": { "type": "string", "description": "The IP address used when initiating the Age Assurance flow." }, "initUa": { "type": "string", "description": "The user agent used when initiating the Age Assurance flow." }, "completeIp": { "type": "string", "description": "The IP address used when completing the Age Assurance flow." }, "completeUa": { "type": "string", "description": "The user agent used when completing the Age Assurance flow." } } }, "app.bsky.bookmark.defs.bookmark": { "type": "object", "description": "Object used to store bookmark data in stash.", "required": [ "subject" ], "properties": { "subject": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } } }, "app.bsky.bookmark.defs.bookmarkView": { "type": "object", "required": [ "subject", "item" ], "properties": { "subject": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "createdAt": { "type": "string", "format": "date-time" }, "item": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.notFoundPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" } ] } } }, "app.bsky.contact.defs.matchAndContactIndex": { "type": "object", "description": "Associates a profile with the positional index of the contact import input in the call to `app.bsky.contact.importContacts`, so clients can know which phone caused a particular match.", "required": [ "match", "contactIndex" ], "properties": { "match": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "contactIndex": { "type": "integer", "minimum": 0, "maximum": 999 } } }, "app.bsky.contact.defs.syncStatus": { "type": "object", "required": [ "syncedAt", "matchesCount" ], "properties": { "syncedAt": { "type": "string", "description": "Last date when contacts where imported.", "format": "date-time" }, "matchesCount": { "type": "integer", "minimum": 0 } } }, "app.bsky.contact.defs.notification": { "type": "object", "description": "A stash object to be sent via bsync representing a notification to be created.", "required": [ "from", "to" ], "properties": { "from": { "type": "string", "description": "The DID of who this notification comes from.", "format": "did" }, "to": { "type": "string", "description": "The DID of who this notification should go to.", "format": "did" } } }, "app.bsky.embed.defs.aspectRatio": { "type": "object", "description": "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.", "required": [ "width", "height" ], "properties": { "width": { "type": "integer", "minimum": 1 }, "height": { "type": "integer", "minimum": 1 } } }, "app.bsky.embed.external": { "type": "object", "description": "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).", "required": [ "external" ], "properties": { "external": { "$ref": "#/components/schemas/app.bsky.embed.external.external" } } }, "app.bsky.embed.external.external": { "type": "object", "required": [ "uri", "title", "description" ], "properties": { "uri": { "type": "string", "format": "uri" }, "title": { "type": "string" }, "description": { "type": "string" }, "thumb": { "type": "string", "format": "binary", "maxLength": 1000000 } } }, "app.bsky.embed.external.view": { "type": "object", "required": [ "external" ], "properties": { "external": { "$ref": "#/components/schemas/app.bsky.embed.external.viewExternal" } } }, "app.bsky.embed.external.viewExternal": { "type": "object", "required": [ "uri", "title", "description" ], "properties": { "uri": { "type": "string", "format": "uri" }, "title": { "type": "string" }, "description": { "type": "string" }, "thumb": { "type": "string", "format": "uri" } } }, "app.bsky.embed.images": { "type": "object", "required": [ "images" ], "properties": { "images": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.embed.images.image" }, "maxItems": 4 } } }, "app.bsky.embed.images.image": { "type": "object", "required": [ "image", "alt" ], "properties": { "image": { "type": "string", "format": "binary", "maxLength": 1000000 }, "alt": { "type": "string", "description": "Alt text description of the image, for accessibility." }, "aspectRatio": { "$ref": "#/components/schemas/app.bsky.embed.defs.aspectRatio" } } }, "app.bsky.embed.images.view": { "type": "object", "required": [ "images" ], "properties": { "images": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.embed.images.viewImage" }, "maxItems": 4 } } }, "app.bsky.embed.images.viewImage": { "type": "object", "required": [ "thumb", "fullsize", "alt" ], "properties": { "thumb": { "type": "string", "description": "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.", "format": "uri" }, "fullsize": { "type": "string", "description": "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.", "format": "uri" }, "alt": { "type": "string", "description": "Alt text description of the image, for accessibility." }, "aspectRatio": { "$ref": "#/components/schemas/app.bsky.embed.defs.aspectRatio" } } }, "app.bsky.embed.record": { "type": "object", "required": [ "record" ], "properties": { "record": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } } }, "app.bsky.embed.record.view": { "type": "object", "required": [ "record" ], "properties": { "record": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.record.viewRecord" }, { "$ref": "#/components/schemas/app.bsky.embed.record.viewNotFound" }, { "$ref": "#/components/schemas/app.bsky.embed.record.viewBlocked" }, { "$ref": "#/components/schemas/app.bsky.embed.record.viewDetached" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" }, { "$ref": "#/components/schemas/app.bsky.graph.defs.listView" }, { "$ref": "#/components/schemas/app.bsky.labeler.defs.labelerView" }, { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackViewBasic" } ] } } }, "app.bsky.embed.record.viewRecord": { "type": "object", "required": [ "uri", "cid", "author", "value", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "author": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" }, "value": {}, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "replyCount": { "type": "integer" }, "repostCount": { "type": "integer" }, "likeCount": { "type": "integer" }, "quoteCount": { "type": "integer" }, "embeds": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.images.view" }, { "$ref": "#/components/schemas/app.bsky.embed.video.view" }, { "$ref": "#/components/schemas/app.bsky.embed.external.view" }, { "$ref": "#/components/schemas/app.bsky.embed.record.view" }, { "$ref": "#/components/schemas/app.bsky.embed.recordWithMedia.view" } ] } }, "indexedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.embed.record.viewNotFound": { "type": "object", "required": [ "uri", "notFound" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "notFound": { "type": "boolean", "default": true } } }, "app.bsky.embed.record.viewBlocked": { "type": "object", "required": [ "uri", "blocked", "author" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "blocked": { "type": "boolean", "default": true }, "author": { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedAuthor" } } }, "app.bsky.embed.record.viewDetached": { "type": "object", "required": [ "uri", "detached" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "detached": { "type": "boolean", "default": true } } }, "app.bsky.embed.recordWithMedia": { "type": "object", "required": [ "record", "media" ], "properties": { "record": { "$ref": "#/components/schemas/app.bsky.embed.record" }, "media": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.images" }, { "$ref": "#/components/schemas/app.bsky.embed.video" }, { "$ref": "#/components/schemas/app.bsky.embed.external" } ] } } }, "app.bsky.embed.recordWithMedia.view": { "type": "object", "required": [ "record", "media" ], "properties": { "record": { "$ref": "#/components/schemas/app.bsky.embed.record.view" }, "media": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.images.view" }, { "$ref": "#/components/schemas/app.bsky.embed.video.view" }, { "$ref": "#/components/schemas/app.bsky.embed.external.view" } ] } } }, "app.bsky.embed.video": { "type": "object", "required": [ "video" ], "properties": { "video": { "type": "string", "format": "binary", "maxLength": 100000000 }, "captions": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.embed.video.caption" }, "maxItems": 20 }, "alt": { "type": "string", "description": "Alt text description of the video, for accessibility.", "maxLength": 10000 }, "aspectRatio": { "$ref": "#/components/schemas/app.bsky.embed.defs.aspectRatio" } } }, "app.bsky.embed.video.caption": { "type": "object", "required": [ "lang", "file" ], "properties": { "lang": { "type": "string", "format": "language" }, "file": { "type": "string", "format": "binary", "maxLength": 20000 } } }, "app.bsky.embed.video.view": { "type": "object", "required": [ "cid", "playlist" ], "properties": { "cid": { "type": "string", "format": "cid" }, "playlist": { "type": "string", "format": "uri" }, "thumbnail": { "type": "string", "format": "uri" }, "alt": { "type": "string", "maxLength": 10000 }, "aspectRatio": { "$ref": "#/components/schemas/app.bsky.embed.defs.aspectRatio" } } }, "app.bsky.feed.defs.postView": { "type": "object", "required": [ "uri", "cid", "author", "record", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "author": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" }, "record": {}, "embed": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.images.view" }, { "$ref": "#/components/schemas/app.bsky.embed.video.view" }, { "$ref": "#/components/schemas/app.bsky.embed.external.view" }, { "$ref": "#/components/schemas/app.bsky.embed.record.view" }, { "$ref": "#/components/schemas/app.bsky.embed.recordWithMedia.view" } ] }, "bookmarkCount": { "type": "integer" }, "replyCount": { "type": "integer" }, "repostCount": { "type": "integer" }, "likeCount": { "type": "integer" }, "quoteCount": { "type": "integer" }, "indexedAt": { "type": "string", "format": "date-time" }, "viewer": { "$ref": "#/components/schemas/app.bsky.feed.defs.viewerState" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "threadgate": { "$ref": "#/components/schemas/app.bsky.feed.defs.threadgateView" }, "debug": {} } }, "app.bsky.feed.defs.viewerState": { "type": "object", "description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.", "properties": { "repost": { "type": "string", "format": "at-uri" }, "like": { "type": "string", "format": "at-uri" }, "bookmarked": { "type": "boolean" }, "threadMuted": { "type": "boolean" }, "replyDisabled": { "type": "boolean" }, "embeddingDisabled": { "type": "boolean" }, "pinned": { "type": "boolean" } } }, "app.bsky.feed.defs.threadContext": { "type": "object", "description": "Metadata about this post within the context of the thread it is in.", "properties": { "rootAuthorLike": { "type": "string", "format": "at-uri" } } }, "app.bsky.feed.defs.feedViewPost": { "type": "object", "required": [ "post" ], "properties": { "post": { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" }, "reply": { "$ref": "#/components/schemas/app.bsky.feed.defs.replyRef" }, "reason": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.reasonRepost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.reasonPin" } ] }, "feedContext": { "type": "string", "description": "Context provided by feed generator that may be passed back alongside interactions.", "maxLength": 2000 }, "reqId": { "type": "string", "description": "Unique identifier per request that may be passed back alongside interactions.", "maxLength": 100 } } }, "app.bsky.feed.defs.replyRef": { "type": "object", "required": [ "root", "parent" ], "properties": { "root": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.notFoundPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedPost" } ] }, "parent": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.notFoundPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedPost" } ] }, "grandparentAuthor": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" } } }, "app.bsky.feed.defs.reasonRepost": { "type": "object", "required": [ "by", "indexedAt" ], "properties": { "by": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" }, "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "indexedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.feed.defs.reasonPin": { "type": "object", "properties": {} }, "app.bsky.feed.defs.threadViewPost": { "type": "object", "required": [ "post" ], "properties": { "post": { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" }, "parent": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.threadViewPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.notFoundPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedPost" } ] }, "replies": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.threadViewPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.notFoundPost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedPost" } ] } }, "threadContext": { "$ref": "#/components/schemas/app.bsky.feed.defs.threadContext" } } }, "app.bsky.feed.defs.notFoundPost": { "type": "object", "required": [ "uri", "notFound" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "notFound": { "type": "boolean", "default": true } } }, "app.bsky.feed.defs.blockedPost": { "type": "object", "required": [ "uri", "blocked", "author" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "blocked": { "type": "boolean", "default": true }, "author": { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedAuthor" } } }, "app.bsky.feed.defs.blockedAuthor": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" }, "viewer": { "$ref": "#/components/schemas/app.bsky.actor.defs.viewerState" } } }, "app.bsky.feed.defs.generatorView": { "type": "object", "required": [ "uri", "cid", "did", "creator", "displayName", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "did": { "type": "string", "format": "did" }, "creator": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "displayName": { "type": "string" }, "description": { "type": "string", "maxLength": 3000 }, "descriptionFacets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "avatar": { "type": "string", "format": "uri" }, "likeCount": { "type": "integer", "minimum": 0 }, "acceptsInteractions": { "type": "boolean" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "viewer": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorViewerState" }, "contentMode": { "type": "string", "enum": [ "app.bsky.feed.defs#contentModeUnspecified", "app.bsky.feed.defs#contentModeVideo" ] }, "indexedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.feed.defs.generatorViewerState": { "type": "object", "properties": { "like": { "type": "string", "format": "at-uri" } } }, "app.bsky.feed.defs.skeletonFeedPost": { "type": "object", "required": [ "post" ], "properties": { "post": { "type": "string", "format": "at-uri" }, "reason": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.defs.skeletonReasonRepost" }, { "$ref": "#/components/schemas/app.bsky.feed.defs.skeletonReasonPin" } ] }, "feedContext": { "type": "string", "description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions.", "maxLength": 2000 } } }, "app.bsky.feed.defs.skeletonReasonRepost": { "type": "object", "required": [ "repost" ], "properties": { "repost": { "type": "string", "format": "at-uri" } } }, "app.bsky.feed.defs.skeletonReasonPin": { "type": "object", "properties": {} }, "app.bsky.feed.defs.threadgateView": { "type": "object", "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "record": {}, "lists": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.listViewBasic" } } } }, "app.bsky.feed.defs.interaction": { "type": "object", "properties": { "item": { "type": "string", "format": "at-uri" }, "event": { "type": "string", "enum": [ "app.bsky.feed.defs#requestLess", "app.bsky.feed.defs#requestMore", "app.bsky.feed.defs#clickthroughItem", "app.bsky.feed.defs#clickthroughAuthor", "app.bsky.feed.defs#clickthroughReposter", "app.bsky.feed.defs#clickthroughEmbed", "app.bsky.feed.defs#interactionSeen", "app.bsky.feed.defs#interactionLike", "app.bsky.feed.defs#interactionRepost", "app.bsky.feed.defs#interactionReply", "app.bsky.feed.defs#interactionQuote", "app.bsky.feed.defs#interactionShare" ] }, "feedContext": { "type": "string", "description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.", "maxLength": 2000 }, "reqId": { "type": "string", "description": "Unique identifier per request that may be passed back alongside interactions.", "maxLength": 100 } } }, "app.bsky.feed.defs.requestLess": { "type": "string", "format": "token", "description": "Request that less content like the given feed item be shown in the feed" }, "app.bsky.feed.defs.requestMore": { "type": "string", "format": "token", "description": "Request that more content like the given feed item be shown in the feed" }, "app.bsky.feed.defs.clickthroughItem": { "type": "string", "format": "token", "description": "User clicked through to the feed item" }, "app.bsky.feed.defs.clickthroughAuthor": { "type": "string", "format": "token", "description": "User clicked through to the author of the feed item" }, "app.bsky.feed.defs.clickthroughReposter": { "type": "string", "format": "token", "description": "User clicked through to the reposter of the feed item" }, "app.bsky.feed.defs.clickthroughEmbed": { "type": "string", "format": "token", "description": "User clicked through to the embedded content of the feed item" }, "app.bsky.feed.defs.contentModeUnspecified": { "type": "string", "format": "token", "description": "Declares the feed generator returns any types of posts." }, "app.bsky.feed.defs.contentModeVideo": { "type": "string", "format": "token", "description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds." }, "app.bsky.feed.defs.interactionSeen": { "type": "string", "format": "token", "description": "Feed item was seen by user" }, "app.bsky.feed.defs.interactionLike": { "type": "string", "format": "token", "description": "User liked the feed item" }, "app.bsky.feed.defs.interactionRepost": { "type": "string", "format": "token", "description": "User reposted the feed item" }, "app.bsky.feed.defs.interactionReply": { "type": "string", "format": "token", "description": "User replied to the feed item" }, "app.bsky.feed.defs.interactionQuote": { "type": "string", "format": "token", "description": "User quoted the feed item" }, "app.bsky.feed.defs.interactionShare": { "type": "string", "format": "token", "description": "User shared the feed item" }, "app.bsky.feed.describeFeedGenerator.feed": { "type": "object", "required": [ "uri" ], "properties": { "uri": { "type": "string", "format": "at-uri" } } }, "app.bsky.feed.describeFeedGenerator.links": { "type": "object", "properties": { "privacyPolicy": { "type": "string" }, "termsOfService": { "type": "string" } } }, "app.bsky.feed.detach": { "type": "object", "required": [ "post", "targets", "updatedAt" ], "properties": { "post": { "type": "string", "description": "Reference (AT-URI) to the post record.", "format": "at-uri" }, "targets": { "type": "array", "items": { "type": "string", "format": "at-uri" }, "maxItems": 50 }, "updatedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.feed.generator": { "type": "object", "required": [ "did", "displayName", "createdAt" ], "properties": { "did": { "type": "string", "format": "did" }, "displayName": { "type": "string", "maxLength": 240 }, "description": { "type": "string", "maxLength": 3000 }, "descriptionFacets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "avatar": { "type": "string", "format": "binary", "maxLength": 1000000 }, "acceptsInteractions": { "type": "boolean", "description": "Declaration that a feed accepts feedback interactions from a client through app.bsky.feed.sendInteractions" }, "labels": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.label.defs.selfLabels" } ] }, "contentMode": { "type": "string", "enum": [ "app.bsky.feed.defs#contentModeUnspecified", "app.bsky.feed.defs#contentModeVideo" ] }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.feed.getLikes.like": { "type": "object", "required": [ "indexedAt", "createdAt", "actor" ], "properties": { "indexedAt": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" }, "actor": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } }, "app.bsky.feed.like": { "type": "object", "required": [ "subject", "createdAt" ], "properties": { "subject": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "createdAt": { "type": "string", "format": "date-time" }, "via": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } } }, "app.bsky.feed.post": { "type": "object", "required": [ "text", "createdAt" ], "properties": { "text": { "type": "string", "description": "The primary post content. May be an empty string, if there are embeds.", "maxLength": 3000 }, "entities": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.post.entity" } }, "facets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "reply": { "$ref": "#/components/schemas/app.bsky.feed.post.replyRef" }, "embed": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.images" }, { "$ref": "#/components/schemas/app.bsky.embed.video" }, { "$ref": "#/components/schemas/app.bsky.embed.external" }, { "$ref": "#/components/schemas/app.bsky.embed.record" }, { "$ref": "#/components/schemas/app.bsky.embed.recordWithMedia" } ] }, "langs": { "type": "array", "items": { "type": "string", "format": "language" }, "maxItems": 3 }, "labels": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.label.defs.selfLabels" } ] }, "tags": { "type": "array", "items": { "type": "string", "maxLength": 640 }, "maxItems": 8 }, "createdAt": { "type": "string", "description": "Client-declared timestamp when this post was originally created.", "format": "date-time" } } }, "app.bsky.feed.post.replyRef": { "type": "object", "required": [ "root", "parent" ], "properties": { "root": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "parent": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } } }, "app.bsky.feed.post.entity": { "type": "object", "description": "Deprecated: use facets instead.", "required": [ "index", "type", "value" ], "properties": { "index": { "$ref": "#/components/schemas/app.bsky.feed.post.textSlice" }, "type": { "type": "string", "description": "Expected values are 'mention' and 'link'." }, "value": { "type": "string" } } }, "app.bsky.feed.post.textSlice": { "type": "object", "description": "Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.", "required": [ "start", "end" ], "properties": { "start": { "type": "integer", "minimum": 0 }, "end": { "type": "integer", "minimum": 0 } } }, "app.bsky.feed.postgate": { "type": "object", "required": [ "post", "createdAt" ], "properties": { "createdAt": { "type": "string", "format": "date-time" }, "post": { "type": "string", "description": "Reference (AT-URI) to the post record.", "format": "at-uri" }, "detachedEmbeddingUris": { "type": "array", "items": { "type": "string", "format": "at-uri" }, "maxItems": 50 }, "embeddingRules": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.postgate.disableRule" } ] }, "maxItems": 5 } } }, "app.bsky.feed.postgate.disableRule": { "type": "object", "description": "Disables embedding of this post.", "properties": {} }, "app.bsky.feed.repost": { "type": "object", "required": [ "subject", "createdAt" ], "properties": { "subject": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "createdAt": { "type": "string", "format": "date-time" }, "via": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } } }, "app.bsky.feed.threadgate": { "type": "object", "required": [ "post", "createdAt" ], "properties": { "post": { "type": "string", "description": "Reference (AT-URI) to the post record.", "format": "at-uri" }, "allow": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.feed.threadgate.mentionRule" }, { "$ref": "#/components/schemas/app.bsky.feed.threadgate.followerRule" }, { "$ref": "#/components/schemas/app.bsky.feed.threadgate.followingRule" }, { "$ref": "#/components/schemas/app.bsky.feed.threadgate.listRule" } ] }, "maxItems": 5 }, "createdAt": { "type": "string", "format": "date-time" }, "hiddenReplies": { "type": "array", "items": { "type": "string", "format": "at-uri" }, "maxItems": 300 } } }, "app.bsky.feed.threadgate.mentionRule": { "type": "object", "description": "Allow replies from actors mentioned in your post.", "properties": {} }, "app.bsky.feed.threadgate.followerRule": { "type": "object", "description": "Allow replies from actors who follow you.", "properties": {} }, "app.bsky.feed.threadgate.followingRule": { "type": "object", "description": "Allow replies from actors you follow.", "properties": {} }, "app.bsky.feed.threadgate.listRule": { "type": "object", "description": "Allow replies from actors on a list.", "required": [ "list" ], "properties": { "list": { "type": "string", "format": "at-uri" } } }, "app.bsky.graph.block": { "type": "object", "required": [ "subject", "createdAt" ], "properties": { "subject": { "type": "string", "description": "DID of the account to be blocked.", "format": "did" }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.defs.listViewBasic": { "type": "object", "required": [ "uri", "cid", "name", "purpose" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "name": { "type": "string", "minLength": 1, "maxLength": 64 }, "purpose": { "$ref": "#/components/schemas/app.bsky.graph.defs.listPurpose" }, "avatar": { "type": "string", "format": "uri" }, "listItemCount": { "type": "integer", "minimum": 0 }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "viewer": { "$ref": "#/components/schemas/app.bsky.graph.defs.listViewerState" }, "indexedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.defs.listView": { "type": "object", "required": [ "uri", "cid", "creator", "name", "purpose", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "creator": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "name": { "type": "string", "minLength": 1, "maxLength": 64 }, "purpose": { "$ref": "#/components/schemas/app.bsky.graph.defs.listPurpose" }, "description": { "type": "string", "maxLength": 3000 }, "descriptionFacets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "avatar": { "type": "string", "format": "uri" }, "listItemCount": { "type": "integer", "minimum": 0 }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "viewer": { "$ref": "#/components/schemas/app.bsky.graph.defs.listViewerState" }, "indexedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.defs.listItemView": { "type": "object", "required": [ "uri", "subject" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "subject": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" } } }, "app.bsky.graph.defs.starterPackView": { "type": "object", "required": [ "uri", "cid", "record", "creator", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "record": {}, "creator": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" }, "list": { "$ref": "#/components/schemas/app.bsky.graph.defs.listViewBasic" }, "listItemsSample": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.defs.listItemView" }, "maxItems": 12 }, "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.feed.defs.generatorView" }, "maxItems": 3 }, "joinedWeekCount": { "type": "integer", "minimum": 0 }, "joinedAllTimeCount": { "type": "integer", "minimum": 0 }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "indexedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.defs.starterPackViewBasic": { "type": "object", "required": [ "uri", "cid", "record", "creator", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "record": {}, "creator": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" }, "listItemCount": { "type": "integer", "minimum": 0 }, "joinedWeekCount": { "type": "integer", "minimum": 0 }, "joinedAllTimeCount": { "type": "integer", "minimum": 0 }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "indexedAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.defs.listPurpose": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.graph.defs.modlist" }, { "$ref": "#/components/schemas/app.bsky.graph.defs.curatelist" }, { "$ref": "#/components/schemas/app.bsky.graph.defs.referencelist" } ] }, "app.bsky.graph.defs.modlist": { "type": "string", "format": "token", "description": "A list of actors to apply an aggregate moderation action (mute/block) on." }, "app.bsky.graph.defs.curatelist": { "type": "string", "format": "token", "description": "A list of actors used for curation purposes such as list feeds or interaction gating." }, "app.bsky.graph.defs.referencelist": { "type": "string", "format": "token", "description": "A list of actors used for only for reference purposes such as within a starter pack." }, "app.bsky.graph.defs.listViewerState": { "type": "object", "properties": { "muted": { "type": "boolean" }, "blocked": { "type": "string", "format": "at-uri" } } }, "app.bsky.graph.defs.notFoundActor": { "type": "object", "description": "indicates that a handle or DID could not be resolved", "required": [ "actor", "notFound" ], "properties": { "actor": { "type": "string", "format": "at-identifier" }, "notFound": { "type": "boolean", "default": true } } }, "app.bsky.graph.defs.relationship": { "type": "object", "description": "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" }, "following": { "type": "string", "description": "if the actor follows this DID, this is the AT-URI of the follow record", "format": "at-uri" }, "followedBy": { "type": "string", "description": "if the actor is followed by this DID, contains the AT-URI of the follow record", "format": "at-uri" }, "blocking": { "type": "string", "description": "if the actor blocks this DID, this is the AT-URI of the block record", "format": "at-uri" }, "blockedBy": { "type": "string", "description": "if the actor is blocked by this DID, contains the AT-URI of the block record", "format": "at-uri" }, "blockingByList": { "type": "string", "description": "if the actor blocks this DID via a block list, this is the AT-URI of the listblock record", "format": "at-uri" }, "blockedByList": { "type": "string", "description": "if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record", "format": "at-uri" } } }, "app.bsky.graph.follow": { "type": "object", "required": [ "subject", "createdAt" ], "properties": { "subject": { "type": "string", "format": "did" }, "createdAt": { "type": "string", "format": "date-time" }, "via": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" } } }, "app.bsky.graph.getListsWithMembership.listWithMembership": { "type": "object", "description": "A list and an optional list item indicating membership of a target user to that list.", "required": [ "list" ], "properties": { "list": { "$ref": "#/components/schemas/app.bsky.graph.defs.listView" }, "listItem": { "$ref": "#/components/schemas/app.bsky.graph.defs.listItemView" } } }, "app.bsky.graph.getStarterPacksWithMembership.starterPackWithMembership": { "type": "object", "description": "A starter pack and an optional list item indicating membership of a target user to that starter pack.", "required": [ "starterPack" ], "properties": { "starterPack": { "$ref": "#/components/schemas/app.bsky.graph.defs.starterPackView" }, "listItem": { "$ref": "#/components/schemas/app.bsky.graph.defs.listItemView" } } }, "app.bsky.graph.list": { "type": "object", "required": [ "name", "purpose", "createdAt" ], "properties": { "purpose": { "$ref": "#/components/schemas/app.bsky.graph.defs.listPurpose" }, "name": { "type": "string", "description": "Display name for list; can not be empty.", "minLength": 1, "maxLength": 64 }, "description": { "type": "string", "maxLength": 3000 }, "descriptionFacets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "avatar": { "type": "string", "format": "binary", "maxLength": 1000000 }, "labels": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.label.defs.selfLabels" } ] }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.listblock": { "type": "object", "required": [ "subject", "createdAt" ], "properties": { "subject": { "type": "string", "description": "Reference (AT-URI) to the mod list record.", "format": "at-uri" }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.listitem": { "type": "object", "required": [ "subject", "list", "createdAt" ], "properties": { "subject": { "type": "string", "description": "The account which is included on the list.", "format": "did" }, "list": { "type": "string", "description": "Reference (AT-URI) to the list record (app.bsky.graph.list).", "format": "at-uri" }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.starterpack": { "type": "object", "required": [ "name", "list", "createdAt" ], "properties": { "name": { "type": "string", "description": "Display name for starter pack; can not be empty.", "minLength": 1, "maxLength": 500 }, "description": { "type": "string", "maxLength": 3000 }, "descriptionFacets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "list": { "type": "string", "description": "Reference (AT-URI) to the list record.", "format": "at-uri" }, "feeds": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.graph.starterpack.feedItem" }, "maxItems": 3 }, "createdAt": { "type": "string", "format": "date-time" } } }, "app.bsky.graph.starterpack.feedItem": { "type": "object", "required": [ "uri" ], "properties": { "uri": { "type": "string", "format": "at-uri" } } }, "app.bsky.graph.verification": { "type": "object", "required": [ "subject", "handle", "displayName", "createdAt" ], "properties": { "subject": { "type": "string", "description": "DID of the subject the verification applies to.", "format": "did" }, "handle": { "type": "string", "description": "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.", "format": "handle" }, "displayName": { "type": "string", "description": "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying." }, "createdAt": { "type": "string", "description": "Date of when the verification was created.", "format": "date-time" } } }, "app.bsky.labeler.defs.labelerView": { "type": "object", "required": [ "uri", "cid", "creator", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "creator": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "likeCount": { "type": "integer", "minimum": 0 }, "viewer": { "$ref": "#/components/schemas/app.bsky.labeler.defs.labelerViewerState" }, "indexedAt": { "type": "string", "format": "date-time" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } } } }, "app.bsky.labeler.defs.labelerViewDetailed": { "type": "object", "required": [ "uri", "cid", "creator", "policies", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "creator": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "policies": { "$ref": "#/components/schemas/app.bsky.labeler.defs.labelerPolicies" }, "likeCount": { "type": "integer", "minimum": 0 }, "viewer": { "$ref": "#/components/schemas/app.bsky.labeler.defs.labelerViewerState" }, "indexedAt": { "type": "string", "format": "date-time" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "reasonTypes": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonType" } }, "subjectTypes": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.moderation.defs.subjectType" } }, "subjectCollections": { "type": "array", "items": { "type": "string", "format": "nsid" } } } }, "app.bsky.labeler.defs.labelerViewerState": { "type": "object", "properties": { "like": { "type": "string", "format": "at-uri" } } }, "app.bsky.labeler.defs.labelerPolicies": { "type": "object", "required": [ "labelValues" ], "properties": { "labelValues": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.labelValue" } }, "labelValueDefinitions": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.labelValueDefinition" } } } }, "app.bsky.labeler.service": { "type": "object", "required": [ "policies", "createdAt" ], "properties": { "policies": { "$ref": "#/components/schemas/app.bsky.labeler.defs.labelerPolicies" }, "labels": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.label.defs.selfLabels" } ] }, "createdAt": { "type": "string", "format": "date-time" }, "reasonTypes": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonType" } }, "subjectTypes": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.moderation.defs.subjectType" } }, "subjectCollections": { "type": "array", "items": { "type": "string", "format": "nsid" } } } }, "app.bsky.notification.declaration": { "type": "object", "required": [ "allowSubscriptions" ], "properties": { "allowSubscriptions": { "type": "string", "description": "A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.", "enum": [ "followers", "mutuals", "none" ] } } }, "app.bsky.notification.defs.recordDeleted": { "type": "object", "properties": {} }, "app.bsky.notification.defs.chatPreference": { "type": "object", "required": [ "include", "push" ], "properties": { "include": { "type": "string", "enum": [ "all", "accepted" ] }, "push": { "type": "boolean" } } }, "app.bsky.notification.defs.filterablePreference": { "type": "object", "required": [ "include", "list", "push" ], "properties": { "include": { "type": "string", "enum": [ "all", "follows" ] }, "list": { "type": "boolean" }, "push": { "type": "boolean" } } }, "app.bsky.notification.defs.preference": { "type": "object", "required": [ "list", "push" ], "properties": { "list": { "type": "boolean" }, "push": { "type": "boolean" } } }, "app.bsky.notification.defs.preferences": { "type": "object", "required": [ "chat", "follow", "like", "likeViaRepost", "mention", "quote", "reply", "repost", "repostViaRepost", "starterpackJoined", "subscribedPost", "unverified", "verified" ], "properties": { "chat": { "$ref": "#/components/schemas/app.bsky.notification.defs.chatPreference" }, "follow": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "like": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "likeViaRepost": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "mention": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "quote": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "reply": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "repost": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "repostViaRepost": { "$ref": "#/components/schemas/app.bsky.notification.defs.filterablePreference" }, "starterpackJoined": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" }, "subscribedPost": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" }, "unverified": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" }, "verified": { "$ref": "#/components/schemas/app.bsky.notification.defs.preference" } } }, "app.bsky.notification.defs.activitySubscription": { "type": "object", "required": [ "post", "reply" ], "properties": { "post": { "type": "boolean" }, "reply": { "type": "boolean" } } }, "app.bsky.notification.defs.subjectActivitySubscription": { "type": "object", "description": "Object used to store activity subscription data in stash.", "required": [ "subject", "activitySubscription" ], "properties": { "subject": { "type": "string", "format": "did" }, "activitySubscription": { "$ref": "#/components/schemas/app.bsky.notification.defs.activitySubscription" } } }, "app.bsky.notification.listNotifications.notification": { "type": "object", "required": [ "uri", "cid", "author", "reason", "record", "isRead", "indexedAt" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "author": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileView" }, "reason": { "type": "string", "description": "The reason why this notification was delivered - e.g. your post was liked, or you received a new follower.", "enum": [ "like", "repost", "follow", "mention", "reply", "quote", "starterpack-joined", "verified", "unverified", "like-via-repost", "repost-via-repost", "subscribed-post", "contact-match" ] }, "reasonSubject": { "type": "string", "format": "at-uri" }, "record": {}, "isRead": { "type": "boolean" }, "indexedAt": { "type": "string", "format": "date-time" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } } } }, "app.bsky.richtext.facet": { "type": "object", "description": "Annotation of a sub-string within rich text.", "required": [ "index", "features" ], "properties": { "index": { "$ref": "#/components/schemas/app.bsky.richtext.facet.byteSlice" }, "features": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.richtext.facet.mention" }, { "$ref": "#/components/schemas/app.bsky.richtext.facet.link" }, { "$ref": "#/components/schemas/app.bsky.richtext.facet.tag" } ] } } } }, "app.bsky.richtext.facet.mention": { "type": "object", "description": "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "app.bsky.richtext.facet.link": { "type": "object", "description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.", "required": [ "uri" ], "properties": { "uri": { "type": "string", "format": "uri" } } }, "app.bsky.richtext.facet.tag": { "type": "object", "description": "Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').", "required": [ "tag" ], "properties": { "tag": { "type": "string", "maxLength": 640 } } }, "app.bsky.richtext.facet.byteSlice": { "type": "object", "description": "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.", "required": [ "byteStart", "byteEnd" ], "properties": { "byteStart": { "type": "integer", "minimum": 0 }, "byteEnd": { "type": "integer", "minimum": 0 } } }, "app.bsky.unspecced.checkHandleAvailability.resultAvailable": { "type": "object", "description": "Indicates the provided handle is available.", "properties": {} }, "app.bsky.unspecced.checkHandleAvailability.resultUnavailable": { "type": "object", "description": "Indicates the provided handle is unavailable and gives suggestions of available handles.", "required": [ "suggestions" ], "properties": { "suggestions": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.unspecced.checkHandleAvailability.suggestion" } } } }, "app.bsky.unspecced.checkHandleAvailability.suggestion": { "type": "object", "required": [ "handle", "method" ], "properties": { "handle": { "type": "string", "format": "handle" }, "method": { "type": "string", "description": "Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics." } } }, "app.bsky.unspecced.defs.skeletonSearchPost": { "type": "object", "required": [ "uri" ], "properties": { "uri": { "type": "string", "format": "at-uri" } } }, "app.bsky.unspecced.defs.skeletonSearchActor": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "app.bsky.unspecced.defs.skeletonSearchStarterPack": { "type": "object", "required": [ "uri" ], "properties": { "uri": { "type": "string", "format": "at-uri" } } }, "app.bsky.unspecced.defs.trendingTopic": { "type": "object", "required": [ "topic", "link" ], "properties": { "topic": { "type": "string" }, "displayName": { "type": "string" }, "description": { "type": "string" }, "link": { "type": "string" } } }, "app.bsky.unspecced.defs.skeletonTrend": { "type": "object", "required": [ "topic", "displayName", "link", "startedAt", "postCount", "dids" ], "properties": { "topic": { "type": "string" }, "displayName": { "type": "string" }, "link": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time" }, "postCount": { "type": "integer" }, "status": { "type": "string", "enum": [ "hot" ] }, "category": { "type": "string" }, "dids": { "type": "array", "items": { "type": "string", "format": "did" } } } }, "app.bsky.unspecced.defs.trendView": { "type": "object", "required": [ "topic", "displayName", "link", "startedAt", "postCount", "actors" ], "properties": { "topic": { "type": "string" }, "displayName": { "type": "string" }, "link": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time" }, "postCount": { "type": "integer" }, "status": { "type": "string", "enum": [ "hot" ] }, "category": { "type": "string" }, "actors": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewBasic" } } } }, "app.bsky.unspecced.defs.threadItemPost": { "type": "object", "required": [ "post", "moreParents", "moreReplies", "opThread", "hiddenByThreadgate", "mutedByViewer" ], "properties": { "post": { "$ref": "#/components/schemas/app.bsky.feed.defs.postView" }, "moreParents": { "type": "boolean", "description": "This post has more parents that were not present in the response. This is just a boolean, without the number of parents." }, "moreReplies": { "type": "integer" }, "opThread": { "type": "boolean", "description": "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." }, "hiddenByThreadgate": { "type": "boolean", "description": "The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread." }, "mutedByViewer": { "type": "boolean", "description": "This is by an account muted by the viewer requesting it." } } }, "app.bsky.unspecced.defs.threadItemNoUnauthenticated": { "type": "object", "properties": {} }, "app.bsky.unspecced.defs.threadItemNotFound": { "type": "object", "properties": {} }, "app.bsky.unspecced.defs.threadItemBlocked": { "type": "object", "required": [ "author" ], "properties": { "author": { "$ref": "#/components/schemas/app.bsky.feed.defs.blockedAuthor" } } }, "app.bsky.unspecced.defs.ageAssuranceState": { "type": "object", "description": "The computed state of the age assurance process, returned to the user in question on certain authenticated requests.", "required": [ "status" ], "properties": { "lastInitiatedAt": { "type": "string", "description": "The timestamp when this state was last updated.", "format": "date-time" }, "status": { "type": "string", "description": "The status of the age assurance process.", "enum": [ "unknown", "pending", "assured", "blocked" ] } } }, "app.bsky.unspecced.defs.ageAssuranceEvent": { "type": "object", "description": "Object used to store age assurance data in stash.", "required": [ "createdAt", "status", "attemptId" ], "properties": { "createdAt": { "type": "string", "description": "The date and time of this write operation.", "format": "date-time" }, "status": { "type": "string", "description": "The status of the age assurance process.", "enum": [ "unknown", "pending", "assured" ] }, "attemptId": { "type": "string", "description": "The unique identifier for this instance of the age assurance flow, in UUID format." }, "email": { "type": "string", "description": "The email used for AA." }, "initIp": { "type": "string", "description": "The IP address used when initiating the AA flow." }, "initUa": { "type": "string", "description": "The user agent used when initiating the AA flow." }, "completeIp": { "type": "string", "description": "The IP address used when completing the AA flow." }, "completeUa": { "type": "string", "description": "The user agent used when completing the AA flow." } } }, "app.bsky.unspecced.getConfig.liveNowConfig": { "type": "object", "required": [ "did", "domains" ], "properties": { "did": { "type": "string", "format": "did" }, "domains": { "type": "array", "items": { "type": "string" } } } }, "app.bsky.unspecced.getPostThreadHiddenV2.threadHiddenItem": { "type": "object", "required": [ "uri", "depth", "value" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "depth": { "type": "integer" }, "value": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.unspecced.defs.threadItemPost" } ] } } }, "app.bsky.unspecced.getPostThreadOtherV2.threadItem": { "type": "object", "required": [ "uri", "depth", "value" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "depth": { "type": "integer" }, "value": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.unspecced.defs.threadItemPost" } ] } } }, "app.bsky.unspecced.getPostThreadV2.threadItem": { "type": "object", "required": [ "uri", "depth", "value" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "depth": { "type": "integer" }, "value": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.unspecced.defs.threadItemPost" }, { "$ref": "#/components/schemas/app.bsky.unspecced.defs.threadItemNoUnauthenticated" }, { "$ref": "#/components/schemas/app.bsky.unspecced.defs.threadItemNotFound" }, { "$ref": "#/components/schemas/app.bsky.unspecced.defs.threadItemBlocked" } ] } } }, "app.bsky.unspecced.getTaggedSuggestions.suggestion": { "type": "object", "required": [ "tag", "subjectType", "subject" ], "properties": { "tag": { "type": "string" }, "subjectType": { "type": "string", "enum": [ "actor", "feed" ] }, "subject": { "type": "string", "format": "uri" } } }, "app.bsky.video.defs.jobStatus": { "type": "object", "required": [ "jobId", "did", "state" ], "properties": { "jobId": { "type": "string" }, "did": { "type": "string", "format": "did" }, "state": { "type": "string", "description": "The state of the video processing job. All values not listed as a known value indicate that the job is in process.", "enum": [ "JOB_STATE_COMPLETED", "JOB_STATE_FAILED" ] }, "progress": { "type": "integer", "minimum": 0, "maximum": 100 }, "blob": { "type": "string", "format": "binary" }, "error": { "type": "string" }, "message": { "type": "string" } } }, "chat.bsky.actor.declaration": { "type": "object", "required": [ "allowIncoming" ], "properties": { "allowIncoming": { "type": "string", "enum": [ "all", "none", "following" ] } } }, "chat.bsky.actor.defs.profileViewBasic": { "type": "object", "required": [ "did", "handle" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "displayName": { "type": "string", "maxLength": 640 }, "avatar": { "type": "string", "format": "uri" }, "associated": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileAssociated" }, "viewer": { "$ref": "#/components/schemas/app.bsky.actor.defs.viewerState" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "chatDisabled": { "type": "boolean", "description": "Set to true when the actor cannot actively participate in conversations" }, "verification": { "$ref": "#/components/schemas/app.bsky.actor.defs.verificationState" } } }, "chat.bsky.convo.defs.messageRef": { "type": "object", "required": [ "did", "messageId", "convoId" ], "properties": { "did": { "type": "string", "format": "did" }, "convoId": { "type": "string" }, "messageId": { "type": "string" } } }, "chat.bsky.convo.defs.messageInput": { "type": "object", "required": [ "text" ], "properties": { "text": { "type": "string", "maxLength": 10000 }, "facets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "embed": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.record" } ] } } }, "chat.bsky.convo.defs.messageView": { "type": "object", "required": [ "id", "rev", "text", "sender", "sentAt" ], "properties": { "id": { "type": "string" }, "rev": { "type": "string" }, "text": { "type": "string", "maxLength": 10000 }, "facets": { "type": "array", "items": { "$ref": "#/components/schemas/app.bsky.richtext.facet" } }, "embed": { "oneOf": [ { "$ref": "#/components/schemas/app.bsky.embed.record.view" } ] }, "reactions": { "type": "array", "items": { "$ref": "#/components/schemas/chat.bsky.convo.defs.reactionView" } }, "sender": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageViewSender" }, "sentAt": { "type": "string", "format": "date-time" } } }, "chat.bsky.convo.defs.deletedMessageView": { "type": "object", "required": [ "id", "rev", "sender", "sentAt" ], "properties": { "id": { "type": "string" }, "rev": { "type": "string" }, "sender": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageViewSender" }, "sentAt": { "type": "string", "format": "date-time" } } }, "chat.bsky.convo.defs.messageViewSender": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "chat.bsky.convo.defs.reactionView": { "type": "object", "required": [ "value", "sender", "createdAt" ], "properties": { "value": { "type": "string" }, "sender": { "$ref": "#/components/schemas/chat.bsky.convo.defs.reactionViewSender" }, "createdAt": { "type": "string", "format": "date-time" } } }, "chat.bsky.convo.defs.reactionViewSender": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "chat.bsky.convo.defs.messageAndReactionView": { "type": "object", "required": [ "message", "reaction" ], "properties": { "message": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, "reaction": { "$ref": "#/components/schemas/chat.bsky.convo.defs.reactionView" } } }, "chat.bsky.convo.defs.convoView": { "type": "object", "required": [ "id", "rev", "members", "muted", "unreadCount" ], "properties": { "id": { "type": "string" }, "rev": { "type": "string" }, "members": { "type": "array", "items": { "$ref": "#/components/schemas/chat.bsky.actor.defs.profileViewBasic" } }, "lastMessage": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] }, "lastReaction": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageAndReactionView" } ] }, "muted": { "type": "boolean" }, "status": { "type": "string", "enum": [ "request", "accepted" ] }, "unreadCount": { "type": "integer" } } }, "chat.bsky.convo.defs.logBeginConvo": { "type": "object", "required": [ "rev", "convoId" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" } } }, "chat.bsky.convo.defs.logAcceptConvo": { "type": "object", "required": [ "rev", "convoId" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" } } }, "chat.bsky.convo.defs.logLeaveConvo": { "type": "object", "required": [ "rev", "convoId" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" } } }, "chat.bsky.convo.defs.logMuteConvo": { "type": "object", "required": [ "rev", "convoId" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" } } }, "chat.bsky.convo.defs.logUnmuteConvo": { "type": "object", "required": [ "rev", "convoId" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" } } }, "chat.bsky.convo.defs.logCreateMessage": { "type": "object", "required": [ "rev", "convoId", "message" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" }, "message": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] } } }, "chat.bsky.convo.defs.logDeleteMessage": { "type": "object", "required": [ "rev", "convoId", "message" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" }, "message": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] } } }, "chat.bsky.convo.defs.logReadMessage": { "type": "object", "required": [ "rev", "convoId", "message" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" }, "message": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] } } }, "chat.bsky.convo.defs.logAddReaction": { "type": "object", "required": [ "rev", "convoId", "message", "reaction" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" }, "message": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] }, "reaction": { "$ref": "#/components/schemas/chat.bsky.convo.defs.reactionView" } } }, "chat.bsky.convo.defs.logRemoveReaction": { "type": "object", "required": [ "rev", "convoId", "message", "reaction" ], "properties": { "rev": { "type": "string" }, "convoId": { "type": "string" }, "message": { "oneOf": [ { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageView" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.deletedMessageView" } ] }, "reaction": { "$ref": "#/components/schemas/chat.bsky.convo.defs.reactionView" } } }, "chat.bsky.convo.sendMessageBatch.batchItem": { "type": "object", "required": [ "convoId", "message" ], "properties": { "convoId": { "type": "string" }, "message": { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageInput" } } }, "chat.bsky.moderation.getActorMetadata.metadata": { "type": "object", "required": [ "messagesSent", "messagesReceived", "convos", "convosStarted" ], "properties": { "messagesSent": { "type": "integer" }, "messagesReceived": { "type": "integer" }, "convos": { "type": "integer" }, "convosStarted": { "type": "integer" } } }, "com.atproto.admin.defs.statusAttr": { "type": "object", "required": [ "applied" ], "properties": { "applied": { "type": "boolean" }, "ref": { "type": "string" } } }, "com.atproto.admin.defs.accountView": { "type": "object", "required": [ "did", "handle", "indexedAt" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "email": { "type": "string" }, "relatedRecords": { "type": "array", "items": {} }, "indexedAt": { "type": "string", "format": "date-time" }, "invitedBy": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCode" }, "invites": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCode" } }, "invitesDisabled": { "type": "boolean" }, "emailConfirmedAt": { "type": "string", "format": "date-time" }, "inviteNote": { "type": "string" }, "deactivatedAt": { "type": "string", "format": "date-time" }, "threatSignatures": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.threatSignature" } } } }, "com.atproto.admin.defs.repoRef": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "com.atproto.admin.defs.repoBlobRef": { "type": "object", "required": [ "did", "cid" ], "properties": { "did": { "type": "string", "format": "did" }, "cid": { "type": "string", "format": "cid" }, "recordUri": { "type": "string", "format": "at-uri" } } }, "com.atproto.admin.defs.threatSignature": { "type": "object", "required": [ "property", "value" ], "properties": { "property": { "type": "string" }, "value": { "type": "string" } } }, "com.atproto.identity.defs.identityInfo": { "type": "object", "required": [ "did", "handle", "didDoc" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "description": "The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.", "format": "handle" }, "didDoc": {} } }, "com.atproto.label.defs.label": { "type": "object", "description": "Metadata tag on an atproto resource (eg, repo or record).", "required": [ "src", "uri", "val", "cts" ], "properties": { "ver": { "type": "integer" }, "src": { "type": "string", "description": "DID of the actor who created this label.", "format": "did" }, "uri": { "type": "string", "description": "AT URI of the record, repository (account), or other resource that this label applies to.", "format": "uri" }, "cid": { "type": "string", "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to.", "format": "cid" }, "val": { "type": "string", "description": "The short string name of the value or type of this label.", "maxLength": 128 }, "neg": { "type": "boolean", "description": "If true, this is a negation label, overwriting a previous label." }, "cts": { "type": "string", "description": "Timestamp when this label was created.", "format": "date-time" }, "exp": { "type": "string", "description": "Timestamp at which this label expires (no longer applies).", "format": "date-time" }, "sig": { "type": "string", "format": "byte", "description": "Signature of dag-cbor encoded label." } } }, "com.atproto.label.defs.selfLabels": { "type": "object", "description": "Metadata tags on an atproto record, published by the author within the record.", "required": [ "values" ], "properties": { "values": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.selfLabel" }, "maxItems": 10 } } }, "com.atproto.label.defs.selfLabel": { "type": "object", "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.", "required": [ "val" ], "properties": { "val": { "type": "string", "description": "The short string name of the value or type of this label.", "maxLength": 128 } } }, "com.atproto.label.defs.labelValueDefinition": { "type": "object", "description": "Declares a label value and its expected interpretations and behaviors.", "required": [ "identifier", "severity", "blurs", "locales" ], "properties": { "identifier": { "type": "string", "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", "maxLength": 100 }, "severity": { "type": "string", "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", "enum": [ "inform", "alert", "none" ] }, "blurs": { "type": "string", "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", "enum": [ "content", "media", "none" ] }, "defaultSetting": { "type": "string", "description": "The default setting for this label.", "default": "warn", "enum": [ "ignore", "warn", "hide" ] }, "adultOnly": { "type": "boolean", "description": "Does the user need to have adult content enabled in order to configure this label?" }, "locales": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.labelValueDefinitionStrings" } } } }, "com.atproto.label.defs.labelValueDefinitionStrings": { "type": "object", "description": "Strings which describe the label in the UI, localized into a specific language.", "required": [ "lang", "name", "description" ], "properties": { "lang": { "type": "string", "description": "The code of the language these strings are written in.", "format": "language" }, "name": { "type": "string", "description": "A short human-readable name for the label.", "maxLength": 640 }, "description": { "type": "string", "description": "A longer description of what the label means and why it might be applied.", "maxLength": 100000 } } }, "com.atproto.label.defs.labelValue": { "type": "string", "enum": [ "!hide", "!no-promote", "!warn", "!no-unauthenticated", "dmca-violation", "doxxing", "porn", "sexual", "nudity", "nsfl", "gore" ] }, "com.atproto.label.subscribeLabels.labels": { "type": "object", "required": [ "seq", "labels" ], "properties": { "seq": { "type": "integer" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } } } }, "com.atproto.label.subscribeLabels.info": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "enum": [ "OutdatedCursor" ] }, "message": { "type": "string" } } }, "com.atproto.lexicon.schema": { "type": "object", "required": [ "lexicon" ], "properties": { "lexicon": { "type": "integer" } } }, "com.atproto.moderation.createReport.modTool": { "type": "object", "description": "Moderation tool information for tracing the source of the action", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome')" }, "meta": {} } }, "com.atproto.moderation.defs.reasonType": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonSpam" }, { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonViolation" }, { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonMisleading" }, { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonSexual" }, { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonRude" }, { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonOther" }, { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonAppeal" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonAppeal" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonOther" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonViolenceAnimal" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonViolenceThreats" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonViolenceGraphicContent" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonViolenceGlorification" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonViolenceExtremistContent" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonViolenceTrafficking" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonViolenceOther" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSexualAbuseContent" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSexualNCII" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSexualDeepfake" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSexualAnimal" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSexualUnlabeled" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSexualOther" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonChildSafetyCSAM" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonChildSafetyGroom" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonChildSafetyPrivacy" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonChildSafetyHarassment" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonChildSafetyOther" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonHarassmentTroll" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonHarassmentTargeted" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonHarassmentHateSpeech" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonHarassmentDoxxing" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonHarassmentOther" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonMisleadingBot" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonMisleadingImpersonation" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonMisleadingSpam" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonMisleadingScam" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonMisleadingElections" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonMisleadingOther" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonRuleSiteSecurity" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonRuleProhibitedSales" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonRuleBanEvasion" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonRuleOther" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSelfHarmContent" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSelfHarmED" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSelfHarmStunts" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSelfHarmSubstances" }, { "$ref": "#/components/schemas/tools.ozone.report.defs.reasonSelfHarmOther" } ] }, "com.atproto.moderation.defs.reasonSpam": { "type": "string", "format": "token", "description": "Spam: frequent unwanted promotion, replies, mentions. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingSpam`." }, "com.atproto.moderation.defs.reasonViolation": { "type": "string", "format": "token", "description": "Direct violation of server rules, laws, terms of service. Prefer new lexicon definition `tools.ozone.report.defs#reasonRuleOther`." }, "com.atproto.moderation.defs.reasonMisleading": { "type": "string", "format": "token", "description": "Misleading identity, affiliation, or content. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingOther`." }, "com.atproto.moderation.defs.reasonSexual": { "type": "string", "format": "token", "description": "Unwanted or mislabeled sexual content. Prefer new lexicon definition `tools.ozone.report.defs#reasonSexualUnlabeled`." }, "com.atproto.moderation.defs.reasonRude": { "type": "string", "format": "token", "description": "Rude, harassing, explicit, or otherwise unwelcoming behavior. Prefer new lexicon definition `tools.ozone.report.defs#reasonHarassmentOther`." }, "com.atproto.moderation.defs.reasonOther": { "type": "string", "format": "token", "description": "Reports not falling under another report category. Prefer new lexicon definition `tools.ozone.report.defs#reasonOther`." }, "com.atproto.moderation.defs.reasonAppeal": { "type": "string", "format": "token", "description": "Appeal a previously taken moderation action" }, "com.atproto.moderation.defs.subjectType": { "type": "string", "description": "Tag describing a type of subject that might be reported.", "enum": [ "account", "record", "chat" ] }, "com.atproto.repo.applyWrites.create": { "type": "object", "description": "Operation which creates a new record.", "required": [ "collection", "value" ], "properties": { "collection": { "type": "string", "format": "nsid" }, "rkey": { "type": "string", "description": "NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility.", "format": "record-key", "maxLength": 512 }, "value": {} } }, "com.atproto.repo.applyWrites.update": { "type": "object", "description": "Operation which updates an existing record.", "required": [ "collection", "rkey", "value" ], "properties": { "collection": { "type": "string", "format": "nsid" }, "rkey": { "type": "string", "format": "record-key" }, "value": {} } }, "com.atproto.repo.applyWrites.delete": { "type": "object", "description": "Operation which deletes an existing record.", "required": [ "collection", "rkey" ], "properties": { "collection": { "type": "string", "format": "nsid" }, "rkey": { "type": "string", "format": "record-key" } } }, "com.atproto.repo.applyWrites.createResult": { "type": "object", "required": [ "uri", "cid" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "validationStatus": { "type": "string", "enum": [ "valid", "unknown" ] } } }, "com.atproto.repo.applyWrites.updateResult": { "type": "object", "required": [ "uri", "cid" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "validationStatus": { "type": "string", "enum": [ "valid", "unknown" ] } } }, "com.atproto.repo.applyWrites.deleteResult": { "type": "object", "required": [], "properties": {} }, "com.atproto.repo.defs.commitMeta": { "type": "object", "required": [ "cid", "rev" ], "properties": { "cid": { "type": "string", "format": "cid" }, "rev": { "type": "string", "format": "tid" } } }, "com.atproto.repo.listMissingBlobs.recordBlob": { "type": "object", "required": [ "cid", "recordUri" ], "properties": { "cid": { "type": "string", "format": "cid" }, "recordUri": { "type": "string", "format": "at-uri" } } }, "com.atproto.repo.listRecords.record": { "type": "object", "required": [ "uri", "cid", "value" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "value": {} } }, "com.atproto.repo.strongRef": { "type": "object", "required": [ "uri", "cid" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" } } }, "com.atproto.server.createAppPassword.appPassword": { "type": "object", "required": [ "name", "password", "createdAt" ], "properties": { "name": { "type": "string" }, "password": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "privileged": { "type": "boolean" } } }, "com.atproto.server.createInviteCodes.accountCodes": { "type": "object", "required": [ "account", "codes" ], "properties": { "account": { "type": "string" }, "codes": { "type": "array", "items": { "type": "string" } } } }, "com.atproto.server.defs.inviteCode": { "type": "object", "required": [ "code", "available", "disabled", "forAccount", "createdBy", "createdAt", "uses" ], "properties": { "code": { "type": "string" }, "available": { "type": "integer" }, "disabled": { "type": "boolean" }, "forAccount": { "type": "string" }, "createdBy": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "uses": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCodeUse" } } } }, "com.atproto.server.defs.inviteCodeUse": { "type": "object", "required": [ "usedBy", "usedAt" ], "properties": { "usedBy": { "type": "string", "format": "did" }, "usedAt": { "type": "string", "format": "date-time" } } }, "com.atproto.server.describeServer.links": { "type": "object", "properties": { "privacyPolicy": { "type": "string", "format": "uri" }, "termsOfService": { "type": "string", "format": "uri" } } }, "com.atproto.server.describeServer.contact": { "type": "object", "properties": { "email": { "type": "string" } } }, "com.atproto.server.listAppPasswords.appPassword": { "type": "object", "required": [ "name", "createdAt" ], "properties": { "name": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "privileged": { "type": "boolean" } } }, "com.atproto.sync.defs.hostStatus": { "type": "string", "enum": [ "active", "idle", "offline", "throttled", "banned" ] }, "com.atproto.sync.listHosts.host": { "type": "object", "required": [ "hostname" ], "properties": { "hostname": { "type": "string", "description": "hostname of server; not a URL (no scheme)" }, "seq": { "type": "integer" }, "accountCount": { "type": "integer" }, "status": { "$ref": "#/components/schemas/com.atproto.sync.defs.hostStatus" } } }, "com.atproto.sync.listRepos.repo": { "type": "object", "required": [ "did", "head", "rev" ], "properties": { "did": { "type": "string", "format": "did" }, "head": { "type": "string", "description": "Current repo commit CID", "format": "cid" }, "rev": { "type": "string", "format": "tid" }, "active": { "type": "boolean" }, "status": { "type": "string", "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.", "enum": [ "takendown", "suspended", "deleted", "deactivated", "desynchronized", "throttled" ] } } }, "com.atproto.sync.listReposByCollection.repo": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "com.atproto.sync.subscribeRepos.commit": { "type": "object", "description": "Represents an update of repository state. Note that empty commits are allowed, which include no repo data changes, but an update to rev and signature.", "required": [ "seq", "rebase", "tooBig", "repo", "commit", "rev", "since", "blocks", "ops", "blobs", "time" ], "properties": { "seq": { "type": "integer" }, "rebase": { "type": "boolean", "description": "DEPRECATED -- unused" }, "tooBig": { "type": "boolean", "description": "DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data." }, "repo": { "type": "string", "description": "The repo this event comes from. Note that all other message types name this field 'did'.", "format": "did" }, "commit": { "type": "string", "format": "cid-link" }, "rev": { "type": "string", "description": "The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event.", "format": "tid" }, "since": { "type": "string", "description": "The rev of the last emitted commit from this repo (if any).", "format": "tid" }, "blocks": { "type": "string", "format": "byte", "description": "CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.", "maxLength": 2000000 }, "ops": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.sync.subscribeRepos.repoOp" }, "maxItems": 200 }, "blobs": { "type": "array", "items": { "type": "string", "format": "cid-link" } }, "prevData": { "type": "string", "format": "cid-link" }, "time": { "type": "string", "description": "Timestamp of when this message was originally broadcast.", "format": "date-time" } } }, "com.atproto.sync.subscribeRepos.sync": { "type": "object", "description": "Updates the repo to a new state, without necessarily including that state on the firehose. Used to recover from broken commit streams, data loss incidents, or in situations where upstream host does not know recent state of the repository.", "required": [ "seq", "did", "blocks", "rev", "time" ], "properties": { "seq": { "type": "integer" }, "did": { "type": "string", "description": "The account this repo event corresponds to. Must match that in the commit object.", "format": "did" }, "blocks": { "type": "string", "format": "byte", "description": "CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.", "maxLength": 10000 }, "rev": { "type": "string", "description": "The rev of the commit. This value must match that in the commit object." }, "time": { "type": "string", "description": "Timestamp of when this message was originally broadcast.", "format": "date-time" } } }, "com.atproto.sync.subscribeRepos.identity": { "type": "object", "description": "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.", "required": [ "seq", "did", "time" ], "properties": { "seq": { "type": "integer" }, "did": { "type": "string", "format": "did" }, "time": { "type": "string", "format": "date-time" }, "handle": { "type": "string", "description": "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.", "format": "handle" } } }, "com.atproto.sync.subscribeRepos.account": { "type": "object", "description": "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.", "required": [ "seq", "did", "time", "active" ], "properties": { "seq": { "type": "integer" }, "did": { "type": "string", "format": "did" }, "time": { "type": "string", "format": "date-time" }, "active": { "type": "boolean", "description": "Indicates that the account has a repository which can be fetched from the host that emitted this event." }, "status": { "type": "string", "description": "If active=false, this optional field indicates a reason for why the account is not active.", "enum": [ "takendown", "suspended", "deleted", "deactivated", "desynchronized", "throttled" ] } } }, "com.atproto.sync.subscribeRepos.info": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "enum": [ "OutdatedCursor" ] }, "message": { "type": "string" } } }, "com.atproto.sync.subscribeRepos.repoOp": { "type": "object", "description": "A repo operation, ie a mutation of a single record.", "required": [ "action", "path", "cid" ], "properties": { "action": { "type": "string", "enum": [ "create", "update", "delete" ] }, "path": { "type": "string" }, "cid": { "type": "string", "format": "cid-link" }, "prev": { "type": "string", "format": "cid-link" } } }, "com.atproto.temp.checkHandleAvailability.resultAvailable": { "type": "object", "description": "Indicates the provided handle is available.", "properties": {} }, "com.atproto.temp.checkHandleAvailability.resultUnavailable": { "type": "object", "description": "Indicates the provided handle is unavailable and gives suggestions of available handles.", "required": [ "suggestions" ], "properties": { "suggestions": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.temp.checkHandleAvailability.suggestion" } } } }, "com.atproto.temp.checkHandleAvailability.suggestion": { "type": "object", "required": [ "handle", "method" ], "properties": { "handle": { "type": "string", "format": "handle" }, "method": { "type": "string", "description": "Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics." } } }, "tools.ozone.communication.defs.templateView": { "type": "object", "required": [ "id", "name", "contentMarkdown", "disabled", "lastUpdatedBy", "createdAt", "updatedAt" ], "properties": { "id": { "type": "string" }, "name": { "type": "string", "description": "Name of the template." }, "subject": { "type": "string", "description": "Content of the template, can contain markdown and variable placeholders." }, "contentMarkdown": { "type": "string", "description": "Subject of the message, used in emails." }, "disabled": { "type": "boolean" }, "lang": { "type": "string", "description": "Message language.", "format": "language" }, "lastUpdatedBy": { "type": "string", "description": "DID of the user who last updated the template.", "format": "did" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "tools.ozone.hosting.getAccountHistory.event": { "type": "object", "required": [ "details", "createdBy", "createdAt" ], "properties": { "details": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.hosting.getAccountHistory.accountCreated" }, { "$ref": "#/components/schemas/tools.ozone.hosting.getAccountHistory.emailUpdated" }, { "$ref": "#/components/schemas/tools.ozone.hosting.getAccountHistory.emailConfirmed" }, { "$ref": "#/components/schemas/tools.ozone.hosting.getAccountHistory.passwordUpdated" }, { "$ref": "#/components/schemas/tools.ozone.hosting.getAccountHistory.handleUpdated" } ] }, "createdBy": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" } } }, "tools.ozone.hosting.getAccountHistory.accountCreated": { "type": "object", "required": [], "properties": { "email": { "type": "string" }, "handle": { "type": "string", "format": "handle" } } }, "tools.ozone.hosting.getAccountHistory.emailUpdated": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string" } } }, "tools.ozone.hosting.getAccountHistory.emailConfirmed": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string" } } }, "tools.ozone.hosting.getAccountHistory.passwordUpdated": { "type": "object", "required": [], "properties": {} }, "tools.ozone.hosting.getAccountHistory.handleUpdated": { "type": "object", "required": [ "handle" ], "properties": { "handle": { "type": "string", "format": "handle" } } }, "tools.ozone.moderation.cancelScheduledActions.cancellationResults": { "type": "object", "required": [ "succeeded", "failed" ], "properties": { "succeeded": { "type": "array", "items": { "type": "string", "format": "did" } }, "failed": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.cancelScheduledActions.failedCancellation" } } } }, "tools.ozone.moderation.cancelScheduledActions.failedCancellation": { "type": "object", "required": [ "did", "error" ], "properties": { "did": { "type": "string", "format": "did" }, "error": { "type": "string" }, "errorCode": { "type": "string" } } }, "tools.ozone.moderation.defs.modEventView": { "type": "object", "required": [ "id", "event", "subject", "subjectBlobCids", "createdBy", "createdAt" ], "properties": { "id": { "type": "integer" }, "event": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventTakedown" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventReverseTakedown" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventComment" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventReport" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventLabel" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventAcknowledge" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventEscalate" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventMute" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventUnmute" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventMuteReporter" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventUnmuteReporter" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventEmail" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventResolveAppeal" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventDivert" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventTag" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.accountEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.identityEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventPriorityScore" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.ageAssuranceEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.ageAssuranceOverrideEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.revokeAccountCredentialsEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.scheduleTakedownEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.cancelScheduledTakedownEvent" } ] }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageRef" } ] }, "subjectBlobCids": { "type": "array", "items": { "type": "string" } }, "createdBy": { "type": "string", "format": "did" }, "createdAt": { "type": "string", "format": "date-time" }, "creatorHandle": { "type": "string" }, "subjectHandle": { "type": "string" }, "modTool": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modTool" } } }, "tools.ozone.moderation.defs.modEventViewDetail": { "type": "object", "required": [ "id", "event", "subject", "subjectBlobs", "createdBy", "createdAt" ], "properties": { "id": { "type": "integer" }, "event": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventTakedown" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventReverseTakedown" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventComment" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventReport" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventLabel" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventAcknowledge" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventEscalate" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventMute" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventUnmute" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventMuteReporter" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventUnmuteReporter" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventEmail" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventResolveAppeal" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventDivert" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventTag" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.accountEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.identityEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modEventPriorityScore" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.ageAssuranceEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.ageAssuranceOverrideEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.revokeAccountCredentialsEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.scheduleTakedownEvent" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.cancelScheduledTakedownEvent" } ] }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoView" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewNotFound" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordView" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordViewNotFound" } ] }, "subjectBlobs": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.blobView" } }, "createdBy": { "type": "string", "format": "did" }, "createdAt": { "type": "string", "format": "date-time" }, "modTool": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.modTool" } } }, "tools.ozone.moderation.defs.subjectStatusView": { "type": "object", "required": [ "id", "subject", "createdAt", "updatedAt", "reviewState" ], "properties": { "id": { "type": "integer" }, "subject": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.admin.defs.repoRef" }, { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, { "$ref": "#/components/schemas/chat.bsky.convo.defs.messageRef" } ] }, "hosting": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.accountHosting" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordHosting" } ] }, "subjectBlobCids": { "type": "array", "items": { "type": "string", "format": "cid" } }, "subjectRepoHandle": { "type": "string" }, "updatedAt": { "type": "string", "description": "Timestamp referencing when the last update was made to the moderation status of the subject", "format": "date-time" }, "createdAt": { "type": "string", "description": "Timestamp referencing the first moderation status impacting event was emitted on the subject", "format": "date-time" }, "reviewState": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.subjectReviewState" }, "comment": { "type": "string", "description": "Sticky comment on the subject." }, "priorityScore": { "type": "integer", "minimum": 0, "maximum": 100 }, "muteUntil": { "type": "string", "format": "date-time" }, "muteReportingUntil": { "type": "string", "format": "date-time" }, "lastReviewedBy": { "type": "string", "format": "did" }, "lastReviewedAt": { "type": "string", "format": "date-time" }, "lastReportedAt": { "type": "string", "format": "date-time" }, "lastAppealedAt": { "type": "string", "description": "Timestamp referencing when the author of the subject appealed a moderation action", "format": "date-time" }, "takendown": { "type": "boolean" }, "appealed": { "type": "boolean", "description": "True indicates that the a previously taken moderator action was appealed against, by the author of the content. False indicates last appeal was resolved by moderators." }, "suspendUntil": { "type": "string", "format": "date-time" }, "tags": { "type": "array", "items": { "type": "string" } }, "accountStats": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.accountStats" }, "recordsStats": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordsStats" }, "accountStrike": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.accountStrike" }, "ageAssuranceState": { "type": "string", "description": "Current age assurance state of the subject.", "enum": [ "pending", "assured", "unknown", "reset", "blocked" ] }, "ageAssuranceUpdatedBy": { "type": "string", "description": "Whether or not the last successful update to age assurance was made by the user or admin.", "enum": [ "admin", "user" ] } } }, "tools.ozone.moderation.defs.subjectView": { "type": "object", "description": "Detailed view of a subject. For record subjects, the author's repo and profile will be returned.", "required": [ "type", "subject" ], "properties": { "type": { "$ref": "#/components/schemas/com.atproto.moderation.defs.subjectType" }, "subject": { "type": "string" }, "status": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.subjectStatusView" }, "repo": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewDetail" }, "profile": { "oneOf": [] }, "record": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.recordViewDetail" } } }, "tools.ozone.moderation.defs.accountStats": { "type": "object", "description": "Statistics about a particular account subject", "properties": { "reportCount": { "type": "integer" }, "appealCount": { "type": "integer" }, "suspendCount": { "type": "integer" }, "escalateCount": { "type": "integer" }, "takedownCount": { "type": "integer" } } }, "tools.ozone.moderation.defs.recordsStats": { "type": "object", "description": "Statistics about a set of record subject items", "properties": { "totalReports": { "type": "integer" }, "reportedCount": { "type": "integer" }, "escalatedCount": { "type": "integer" }, "appealedCount": { "type": "integer" }, "subjectCount": { "type": "integer" }, "pendingCount": { "type": "integer" }, "processedCount": { "type": "integer" }, "takendownCount": { "type": "integer" } } }, "tools.ozone.moderation.defs.accountStrike": { "type": "object", "description": "Strike information for an account", "properties": { "activeStrikeCount": { "type": "integer" }, "totalStrikeCount": { "type": "integer" }, "firstStrikeAt": { "type": "string", "description": "Timestamp of the first strike received", "format": "date-time" }, "lastStrikeAt": { "type": "string", "description": "Timestamp of the most recent strike received", "format": "date-time" } } }, "tools.ozone.moderation.defs.subjectReviewState": { "type": "string", "enum": [ "tools.ozone.moderation.defs#reviewOpen", "tools.ozone.moderation.defs#reviewEscalated", "tools.ozone.moderation.defs#reviewClosed", "tools.ozone.moderation.defs#reviewNone" ] }, "tools.ozone.moderation.defs.reviewOpen": { "type": "string", "format": "token", "description": "Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator" }, "tools.ozone.moderation.defs.reviewEscalated": { "type": "string", "format": "token", "description": "Moderator review status of a subject: Escalated. Indicates that the subject was escalated for review by a moderator" }, "tools.ozone.moderation.defs.reviewClosed": { "type": "string", "format": "token", "description": "Moderator review status of a subject: Closed. Indicates that the subject was already reviewed and resolved by a moderator" }, "tools.ozone.moderation.defs.reviewNone": { "type": "string", "format": "token", "description": "Moderator review status of a subject: Unnecessary. Indicates that the subject does not need a review at the moment but there is probably some moderation related metadata available for it" }, "tools.ozone.moderation.defs.modEventTakedown": { "type": "object", "description": "Take down a subject permanently or temporarily", "properties": { "comment": { "type": "string" }, "durationInHours": { "type": "integer" }, "acknowledgeAccountSubjects": { "type": "boolean", "description": "If true, all other reports on content authored by this account will be resolved (acknowledged)." }, "policies": { "type": "array", "items": { "type": "string" }, "maxItems": 5 }, "severityLevel": { "type": "string", "description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.)." }, "targetServices": { "type": "array", "items": { "type": "string", "enum": [ "appview", "pds" ] } }, "strikeCount": { "type": "integer" }, "strikeExpiresAt": { "type": "string", "description": "When the strike should expire. If not provided, the strike never expires.", "format": "date-time" } } }, "tools.ozone.moderation.defs.modEventReverseTakedown": { "type": "object", "description": "Revert take down action on a subject", "properties": { "comment": { "type": "string", "description": "Describe reasoning behind the reversal." }, "policies": { "type": "array", "items": { "type": "string" }, "maxItems": 5 }, "severityLevel": { "type": "string", "description": "Severity level of the violation. Usually set from the last policy infraction's severity." }, "strikeCount": { "type": "integer" } } }, "tools.ozone.moderation.defs.modEventResolveAppeal": { "type": "object", "description": "Resolve appeal on a subject", "properties": { "comment": { "type": "string", "description": "Describe resolution." } } }, "tools.ozone.moderation.defs.modEventComment": { "type": "object", "description": "Add a comment to a subject. An empty comment will clear any previously set sticky comment.", "properties": { "comment": { "type": "string" }, "sticky": { "type": "boolean", "description": "Make the comment persistent on the subject" } } }, "tools.ozone.moderation.defs.modEventReport": { "type": "object", "description": "Report a subject", "required": [ "reportType" ], "properties": { "comment": { "type": "string" }, "isReporterMuted": { "type": "boolean", "description": "Set to true if the reporter was muted from reporting at the time of the event. These reports won't impact the reviewState of the subject." }, "reportType": { "$ref": "#/components/schemas/com.atproto.moderation.defs.reasonType" } } }, "tools.ozone.moderation.defs.modEventLabel": { "type": "object", "description": "Apply/Negate labels on a subject", "required": [ "createLabelVals", "negateLabelVals" ], "properties": { "comment": { "type": "string" }, "createLabelVals": { "type": "array", "items": { "type": "string" } }, "negateLabelVals": { "type": "array", "items": { "type": "string" } }, "durationInHours": { "type": "integer" } } }, "tools.ozone.moderation.defs.modEventPriorityScore": { "type": "object", "description": "Set priority score of the subject. Higher score means higher priority.", "required": [ "score" ], "properties": { "comment": { "type": "string" }, "score": { "type": "integer", "minimum": 0, "maximum": 100 } } }, "tools.ozone.moderation.defs.ageAssuranceEvent": { "type": "object", "description": "Age assurance info coming directly from users. Only works on DID subjects.", "required": [ "createdAt", "status", "attemptId" ], "properties": { "createdAt": { "type": "string", "description": "The date and time of this write operation.", "format": "date-time" }, "attemptId": { "type": "string", "description": "The unique identifier for this instance of the age assurance flow, in UUID format." }, "status": { "type": "string", "description": "The status of the Age Assurance process.", "enum": [ "unknown", "pending", "assured" ] }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" }, "countryCode": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow." }, "regionCode": { "type": "string", "description": "The ISO 3166-2 region code provided when beginning the Age Assurance flow." }, "initIp": { "type": "string", "description": "The IP address used when initiating the AA flow." }, "initUa": { "type": "string", "description": "The user agent used when initiating the AA flow." }, "completeIp": { "type": "string", "description": "The IP address used when completing the AA flow." }, "completeUa": { "type": "string", "description": "The user agent used when completing the AA flow." } } }, "tools.ozone.moderation.defs.ageAssuranceOverrideEvent": { "type": "object", "description": "Age assurance status override by moderators. Only works on DID subjects.", "required": [ "comment", "status" ], "properties": { "status": { "type": "string", "description": "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.", "enum": [ "assured", "reset", "blocked" ] }, "access": { "$ref": "#/components/schemas/app.bsky.ageassurance.defs.access" }, "comment": { "type": "string", "description": "Comment describing the reason for the override.", "minLength": 1 } } }, "tools.ozone.moderation.defs.revokeAccountCredentialsEvent": { "type": "object", "description": "Account credentials revocation by moderators. Only works on DID subjects.", "required": [ "comment" ], "properties": { "comment": { "type": "string", "description": "Comment describing the reason for the revocation.", "minLength": 1 } } }, "tools.ozone.moderation.defs.modEventAcknowledge": { "type": "object", "properties": { "comment": { "type": "string" }, "acknowledgeAccountSubjects": { "type": "boolean", "description": "If true, all other reports on content authored by this account will be resolved (acknowledged)." } } }, "tools.ozone.moderation.defs.modEventEscalate": { "type": "object", "properties": { "comment": { "type": "string" } } }, "tools.ozone.moderation.defs.modEventMute": { "type": "object", "description": "Mute incoming reports on a subject", "required": [ "durationInHours" ], "properties": { "comment": { "type": "string" }, "durationInHours": { "type": "integer" } } }, "tools.ozone.moderation.defs.modEventUnmute": { "type": "object", "description": "Unmute action on a subject", "properties": { "comment": { "type": "string", "description": "Describe reasoning behind the reversal." } } }, "tools.ozone.moderation.defs.modEventMuteReporter": { "type": "object", "description": "Mute incoming reports from an account", "properties": { "comment": { "type": "string" }, "durationInHours": { "type": "integer" } } }, "tools.ozone.moderation.defs.modEventUnmuteReporter": { "type": "object", "description": "Unmute incoming reports from an account", "properties": { "comment": { "type": "string", "description": "Describe reasoning behind the reversal." } } }, "tools.ozone.moderation.defs.modEventEmail": { "type": "object", "description": "Keep a log of outgoing email to a user", "required": [ "subjectLine" ], "properties": { "subjectLine": { "type": "string", "description": "The subject line of the email sent to the user." }, "content": { "type": "string", "description": "The content of the email sent to the user." }, "comment": { "type": "string", "description": "Additional comment about the outgoing comm." }, "policies": { "type": "array", "items": { "type": "string" }, "maxItems": 5 }, "severityLevel": { "type": "string", "description": "Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense" }, "strikeCount": { "type": "integer" }, "strikeExpiresAt": { "type": "string", "description": "When the strike should expire. If not provided, the strike never expires.", "format": "date-time" }, "isDelivered": { "type": "boolean", "description": "Indicates whether the email was successfully delivered to the user's inbox." } } }, "tools.ozone.moderation.defs.modEventDivert": { "type": "object", "description": "Divert a record's blobs to a 3rd party service for further scanning/tagging", "properties": { "comment": { "type": "string" } } }, "tools.ozone.moderation.defs.modEventTag": { "type": "object", "description": "Add/Remove a tag on a subject", "required": [ "add", "remove" ], "properties": { "add": { "type": "array", "items": { "type": "string" } }, "remove": { "type": "array", "items": { "type": "string" } }, "comment": { "type": "string", "description": "Additional comment about added/removed tags." } } }, "tools.ozone.moderation.defs.accountEvent": { "type": "object", "description": "Logs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.", "required": [ "timestamp", "active" ], "properties": { "comment": { "type": "string" }, "active": { "type": "boolean", "description": "Indicates that the account has a repository which can be fetched from the host that emitted this event." }, "status": { "type": "string", "enum": [ "unknown", "deactivated", "deleted", "takendown", "suspended", "tombstoned" ] }, "timestamp": { "type": "string", "format": "date-time" } } }, "tools.ozone.moderation.defs.identityEvent": { "type": "object", "description": "Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.", "required": [ "timestamp" ], "properties": { "comment": { "type": "string" }, "handle": { "type": "string", "format": "handle" }, "pdsHost": { "type": "string", "format": "uri" }, "tombstone": { "type": "boolean" }, "timestamp": { "type": "string", "format": "date-time" } } }, "tools.ozone.moderation.defs.recordEvent": { "type": "object", "description": "Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.", "required": [ "timestamp", "op" ], "properties": { "comment": { "type": "string" }, "op": { "type": "string", "enum": [ "create", "update", "delete" ] }, "cid": { "type": "string", "format": "cid" }, "timestamp": { "type": "string", "format": "date-time" } } }, "tools.ozone.moderation.defs.scheduleTakedownEvent": { "type": "object", "description": "Logs a scheduled takedown action for an account.", "properties": { "comment": { "type": "string" }, "executeAt": { "type": "string", "format": "date-time" }, "executeAfter": { "type": "string", "format": "date-time" }, "executeUntil": { "type": "string", "format": "date-time" } } }, "tools.ozone.moderation.defs.cancelScheduledTakedownEvent": { "type": "object", "description": "Logs cancellation of a scheduled takedown action for an account.", "properties": { "comment": { "type": "string" } } }, "tools.ozone.moderation.defs.repoView": { "type": "object", "required": [ "did", "handle", "relatedRecords", "indexedAt", "moderation" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "email": { "type": "string" }, "relatedRecords": { "type": "array", "items": {} }, "indexedAt": { "type": "string", "format": "date-time" }, "moderation": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.moderation" }, "invitedBy": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCode" }, "invitesDisabled": { "type": "boolean" }, "inviteNote": { "type": "string" }, "deactivatedAt": { "type": "string", "format": "date-time" }, "threatSignatures": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.threatSignature" } } } }, "tools.ozone.moderation.defs.repoViewDetail": { "type": "object", "required": [ "did", "handle", "relatedRecords", "indexedAt", "moderation" ], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "email": { "type": "string" }, "relatedRecords": { "type": "array", "items": {} }, "indexedAt": { "type": "string", "format": "date-time" }, "moderation": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.moderationDetail" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "invitedBy": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCode" }, "invites": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.server.defs.inviteCode" } }, "invitesDisabled": { "type": "boolean" }, "inviteNote": { "type": "string" }, "emailConfirmedAt": { "type": "string", "format": "date-time" }, "deactivatedAt": { "type": "string", "format": "date-time" }, "threatSignatures": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.admin.defs.threatSignature" } } } }, "tools.ozone.moderation.defs.repoViewNotFound": { "type": "object", "required": [ "did" ], "properties": { "did": { "type": "string", "format": "did" } } }, "tools.ozone.moderation.defs.recordView": { "type": "object", "required": [ "uri", "cid", "value", "blobCids", "indexedAt", "moderation", "repo" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "value": {}, "blobCids": { "type": "array", "items": { "type": "string", "format": "cid" } }, "indexedAt": { "type": "string", "format": "date-time" }, "moderation": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.moderation" }, "repo": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoView" } } }, "tools.ozone.moderation.defs.recordViewDetail": { "type": "object", "required": [ "uri", "cid", "value", "blobs", "indexedAt", "moderation", "repo" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "value": {}, "blobs": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.blobView" } }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/com.atproto.label.defs.label" } }, "indexedAt": { "type": "string", "format": "date-time" }, "moderation": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.moderationDetail" }, "repo": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoView" } } }, "tools.ozone.moderation.defs.recordViewNotFound": { "type": "object", "required": [ "uri" ], "properties": { "uri": { "type": "string", "format": "at-uri" } } }, "tools.ozone.moderation.defs.moderation": { "type": "object", "properties": { "subjectStatus": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.subjectStatusView" } } }, "tools.ozone.moderation.defs.moderationDetail": { "type": "object", "properties": { "subjectStatus": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.subjectStatusView" } } }, "tools.ozone.moderation.defs.blobView": { "type": "object", "required": [ "cid", "mimeType", "size", "createdAt" ], "properties": { "cid": { "type": "string", "format": "cid" }, "mimeType": { "type": "string" }, "size": { "type": "integer" }, "createdAt": { "type": "string", "format": "date-time" }, "details": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.imageDetails" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.videoDetails" } ] }, "moderation": { "$ref": "#/components/schemas/tools.ozone.moderation.defs.moderation" } } }, "tools.ozone.moderation.defs.imageDetails": { "type": "object", "required": [ "width", "height" ], "properties": { "width": { "type": "integer" }, "height": { "type": "integer" } } }, "tools.ozone.moderation.defs.videoDetails": { "type": "object", "required": [ "width", "height", "length" ], "properties": { "width": { "type": "integer" }, "height": { "type": "integer" }, "length": { "type": "integer" } } }, "tools.ozone.moderation.defs.accountHosting": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string", "enum": [ "takendown", "suspended", "deleted", "deactivated", "unknown" ] }, "updatedAt": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" }, "deactivatedAt": { "type": "string", "format": "date-time" }, "reactivatedAt": { "type": "string", "format": "date-time" } } }, "tools.ozone.moderation.defs.recordHosting": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string", "enum": [ "deleted", "unknown" ] }, "updatedAt": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } } }, "tools.ozone.moderation.defs.reporterStats": { "type": "object", "required": [ "did", "accountReportCount", "recordReportCount", "reportedAccountCount", "reportedRecordCount", "takendownAccountCount", "takendownRecordCount", "labeledAccountCount", "labeledRecordCount" ], "properties": { "did": { "type": "string", "format": "did" }, "accountReportCount": { "type": "integer" }, "recordReportCount": { "type": "integer" }, "reportedAccountCount": { "type": "integer" }, "reportedRecordCount": { "type": "integer" }, "takendownAccountCount": { "type": "integer" }, "takendownRecordCount": { "type": "integer" }, "labeledAccountCount": { "type": "integer" }, "labeledRecordCount": { "type": "integer" } } }, "tools.ozone.moderation.defs.modTool": { "type": "object", "description": "Moderation tool information for tracing the source of the action", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "Name/identifier of the source (e.g., 'automod', 'ozone/workspace')" }, "meta": {} } }, "tools.ozone.moderation.defs.timelineEventPlcCreate": { "type": "string", "format": "token", "description": "Moderation event timeline event for a PLC create operation" }, "tools.ozone.moderation.defs.timelineEventPlcOperation": { "type": "string", "format": "token", "description": "Moderation event timeline event for generic PLC operation" }, "tools.ozone.moderation.defs.timelineEventPlcTombstone": { "type": "string", "format": "token", "description": "Moderation event timeline event for a PLC tombstone operation" }, "tools.ozone.moderation.defs.scheduledActionView": { "type": "object", "description": "View of a scheduled moderation action", "required": [ "id", "action", "did", "createdBy", "createdAt", "status" ], "properties": { "id": { "type": "integer" }, "action": { "type": "string", "description": "Type of action to be executed", "enum": [ "takedown" ] }, "eventData": {}, "did": { "type": "string", "description": "Subject DID for the action", "format": "did" }, "executeAt": { "type": "string", "description": "Exact time to execute the action", "format": "date-time" }, "executeAfter": { "type": "string", "description": "Earliest time to execute the action (for randomized scheduling)", "format": "date-time" }, "executeUntil": { "type": "string", "description": "Latest time to execute the action (for randomized scheduling)", "format": "date-time" }, "randomizeExecution": { "type": "boolean", "description": "Whether execution time should be randomized within the specified range" }, "createdBy": { "type": "string", "description": "DID of the user who created this scheduled action", "format": "did" }, "createdAt": { "type": "string", "description": "When the scheduled action was created", "format": "date-time" }, "updatedAt": { "type": "string", "description": "When the scheduled action was last updated", "format": "date-time" }, "status": { "type": "string", "description": "Current status of the scheduled action", "enum": [ "pending", "executed", "cancelled", "failed" ] }, "lastExecutedAt": { "type": "string", "description": "When the action was last attempted to be executed", "format": "date-time" }, "lastFailureReason": { "type": "string", "description": "Reason for the last execution failure" }, "executionEventId": { "type": "integer" } } }, "tools.ozone.moderation.getAccountTimeline.timelineItem": { "type": "object", "required": [ "day", "summary" ], "properties": { "day": { "type": "string" }, "summary": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.getAccountTimeline.timelineItemSummary" } } } }, "tools.ozone.moderation.getAccountTimeline.timelineItemSummary": { "type": "object", "required": [ "eventSubjectType", "eventType", "count" ], "properties": { "eventSubjectType": { "type": "string", "enum": [ "account", "record", "chat" ] }, "eventType": { "type": "string", "enum": [ "tools.ozone.moderation.defs#modEventTakedown", "tools.ozone.moderation.defs#modEventReverseTakedown", "tools.ozone.moderation.defs#modEventComment", "tools.ozone.moderation.defs#modEventReport", "tools.ozone.moderation.defs#modEventLabel", "tools.ozone.moderation.defs#modEventAcknowledge", "tools.ozone.moderation.defs#modEventEscalate", "tools.ozone.moderation.defs#modEventMute", "tools.ozone.moderation.defs#modEventUnmute", "tools.ozone.moderation.defs#modEventMuteReporter", "tools.ozone.moderation.defs#modEventUnmuteReporter", "tools.ozone.moderation.defs#modEventEmail", "tools.ozone.moderation.defs#modEventResolveAppeal", "tools.ozone.moderation.defs#modEventDivert", "tools.ozone.moderation.defs#modEventTag", "tools.ozone.moderation.defs#accountEvent", "tools.ozone.moderation.defs#identityEvent", "tools.ozone.moderation.defs#recordEvent", "tools.ozone.moderation.defs#modEventPriorityScore", "tools.ozone.moderation.defs#revokeAccountCredentialsEvent", "tools.ozone.moderation.defs#ageAssuranceEvent", "tools.ozone.moderation.defs#ageAssuranceOverrideEvent", "tools.ozone.moderation.defs#timelineEventPlcCreate", "tools.ozone.moderation.defs#timelineEventPlcOperation", "tools.ozone.moderation.defs#timelineEventPlcTombstone", "tools.ozone.hosting.getAccountHistory#accountCreated", "tools.ozone.hosting.getAccountHistory#emailConfirmed", "tools.ozone.hosting.getAccountHistory#passwordUpdated", "tools.ozone.hosting.getAccountHistory#handleUpdated", "tools.ozone.moderation.defs#scheduleTakedownEvent", "tools.ozone.moderation.defs#cancelScheduledTakedownEvent" ] }, "count": { "type": "integer" } } }, "tools.ozone.moderation.scheduleAction.takedown": { "type": "object", "description": "Schedule a takedown action", "properties": { "comment": { "type": "string" }, "durationInHours": { "type": "integer" }, "acknowledgeAccountSubjects": { "type": "boolean", "description": "If true, all other reports on content authored by this account will be resolved (acknowledged)." }, "policies": { "type": "array", "items": { "type": "string" }, "maxItems": 5 }, "severityLevel": { "type": "string", "description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.)." }, "strikeCount": { "type": "integer" }, "strikeExpiresAt": { "type": "string", "description": "When the strike should expire. If not provided, the strike never expires.", "format": "date-time" }, "emailContent": { "type": "string", "description": "Email content to be sent to the user upon takedown." }, "emailSubject": { "type": "string", "description": "Subject of the email to be sent to the user upon takedown." } } }, "tools.ozone.moderation.scheduleAction.schedulingConfig": { "type": "object", "description": "Configuration for when the action should be executed", "properties": { "executeAt": { "type": "string", "description": "Exact time to execute the action", "format": "date-time" }, "executeAfter": { "type": "string", "description": "Earliest time to execute the action (for randomized scheduling)", "format": "date-time" }, "executeUntil": { "type": "string", "description": "Latest time to execute the action (for randomized scheduling)", "format": "date-time" } } }, "tools.ozone.moderation.scheduleAction.scheduledActionResults": { "type": "object", "required": [ "succeeded", "failed" ], "properties": { "succeeded": { "type": "array", "items": { "type": "string", "format": "did" } }, "failed": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.moderation.scheduleAction.failedScheduling" } } } }, "tools.ozone.moderation.scheduleAction.failedScheduling": { "type": "object", "required": [ "subject", "error" ], "properties": { "subject": { "type": "string", "format": "did" }, "error": { "type": "string" }, "errorCode": { "type": "string" } } }, "tools.ozone.report.defs.reasonType": { "type": "string", "enum": [ "tools.ozone.report.defs#reasonAppeal", "tools.ozone.report.defs#reasonOther", "tools.ozone.report.defs#reasonViolenceAnimal", "tools.ozone.report.defs#reasonViolenceThreats", "tools.ozone.report.defs#reasonViolenceGraphicContent", "tools.ozone.report.defs#reasonViolenceGlorification", "tools.ozone.report.defs#reasonViolenceExtremistContent", "tools.ozone.report.defs#reasonViolenceTrafficking", "tools.ozone.report.defs#reasonViolenceOther", "tools.ozone.report.defs#reasonSexualAbuseContent", "tools.ozone.report.defs#reasonSexualNCII", "tools.ozone.report.defs#reasonSexualDeepfake", "tools.ozone.report.defs#reasonSexualAnimal", "tools.ozone.report.defs#reasonSexualUnlabeled", "tools.ozone.report.defs#reasonSexualOther", "tools.ozone.report.defs#reasonChildSafetyCSAM", "tools.ozone.report.defs#reasonChildSafetyGroom", "tools.ozone.report.defs#reasonChildSafetyPrivacy", "tools.ozone.report.defs#reasonChildSafetyHarassment", "tools.ozone.report.defs#reasonChildSafetyOther", "tools.ozone.report.defs#reasonHarassmentTroll", "tools.ozone.report.defs#reasonHarassmentTargeted", "tools.ozone.report.defs#reasonHarassmentHateSpeech", "tools.ozone.report.defs#reasonHarassmentDoxxing", "tools.ozone.report.defs#reasonHarassmentOther", "tools.ozone.report.defs#reasonMisleadingBot", "tools.ozone.report.defs#reasonMisleadingImpersonation", "tools.ozone.report.defs#reasonMisleadingSpam", "tools.ozone.report.defs#reasonMisleadingScam", "tools.ozone.report.defs#reasonMisleadingElections", "tools.ozone.report.defs#reasonMisleadingOther", "tools.ozone.report.defs#reasonRuleSiteSecurity", "tools.ozone.report.defs#reasonRuleProhibitedSales", "tools.ozone.report.defs#reasonRuleBanEvasion", "tools.ozone.report.defs#reasonRuleOther", "tools.ozone.report.defs#reasonSelfHarmContent", "tools.ozone.report.defs#reasonSelfHarmED", "tools.ozone.report.defs#reasonSelfHarmStunts", "tools.ozone.report.defs#reasonSelfHarmSubstances", "tools.ozone.report.defs#reasonSelfHarmOther" ] }, "tools.ozone.report.defs.reasonAppeal": { "type": "string", "format": "token", "description": "Appeal a previously taken moderation action" }, "tools.ozone.report.defs.reasonOther": { "type": "string", "format": "token", "description": "An issue not included in these options" }, "tools.ozone.report.defs.reasonViolenceAnimal": { "type": "string", "format": "token", "description": "Animal welfare violations" }, "tools.ozone.report.defs.reasonViolenceThreats": { "type": "string", "format": "token", "description": "Threats or incitement" }, "tools.ozone.report.defs.reasonViolenceGraphicContent": { "type": "string", "format": "token", "description": "Graphic violent content" }, "tools.ozone.report.defs.reasonViolenceGlorification": { "type": "string", "format": "token", "description": "Glorification of violence" }, "tools.ozone.report.defs.reasonViolenceExtremistContent": { "type": "string", "format": "token", "description": "Extremist content. These reports will be sent only be sent to the application's Moderation Authority." }, "tools.ozone.report.defs.reasonViolenceTrafficking": { "type": "string", "format": "token", "description": "Human trafficking" }, "tools.ozone.report.defs.reasonViolenceOther": { "type": "string", "format": "token", "description": "Other violent content" }, "tools.ozone.report.defs.reasonSexualAbuseContent": { "type": "string", "format": "token", "description": "Adult sexual abuse content" }, "tools.ozone.report.defs.reasonSexualNCII": { "type": "string", "format": "token", "description": "Non-consensual intimate imagery" }, "tools.ozone.report.defs.reasonSexualDeepfake": { "type": "string", "format": "token", "description": "Deepfake adult content" }, "tools.ozone.report.defs.reasonSexualAnimal": { "type": "string", "format": "token", "description": "Animal sexual abuse" }, "tools.ozone.report.defs.reasonSexualUnlabeled": { "type": "string", "format": "token", "description": "Unlabelled adult content" }, "tools.ozone.report.defs.reasonSexualOther": { "type": "string", "format": "token", "description": "Other sexual violence content" }, "tools.ozone.report.defs.reasonChildSafetyCSAM": { "type": "string", "format": "token", "description": "Child sexual abuse material (CSAM). These reports will be sent only be sent to the application's Moderation Authority." }, "tools.ozone.report.defs.reasonChildSafetyGroom": { "type": "string", "format": "token", "description": "Grooming or predatory behavior. These reports will be sent only be sent to the application's Moderation Authority." }, "tools.ozone.report.defs.reasonChildSafetyPrivacy": { "type": "string", "format": "token", "description": "Privacy violation involving a minor" }, "tools.ozone.report.defs.reasonChildSafetyHarassment": { "type": "string", "format": "token", "description": "Harassment or bullying of minors" }, "tools.ozone.report.defs.reasonChildSafetyOther": { "type": "string", "format": "token", "description": "Other child safety. These reports will be sent only be sent to the application's Moderation Authority." }, "tools.ozone.report.defs.reasonHarassmentTroll": { "type": "string", "format": "token", "description": "Trolling" }, "tools.ozone.report.defs.reasonHarassmentTargeted": { "type": "string", "format": "token", "description": "Targeted harassment" }, "tools.ozone.report.defs.reasonHarassmentHateSpeech": { "type": "string", "format": "token", "description": "Hate speech" }, "tools.ozone.report.defs.reasonHarassmentDoxxing": { "type": "string", "format": "token", "description": "Doxxing" }, "tools.ozone.report.defs.reasonHarassmentOther": { "type": "string", "format": "token", "description": "Other harassing or hateful content" }, "tools.ozone.report.defs.reasonMisleadingBot": { "type": "string", "format": "token", "description": "Fake account or bot" }, "tools.ozone.report.defs.reasonMisleadingImpersonation": { "type": "string", "format": "token", "description": "Impersonation" }, "tools.ozone.report.defs.reasonMisleadingSpam": { "type": "string", "format": "token", "description": "Spam" }, "tools.ozone.report.defs.reasonMisleadingScam": { "type": "string", "format": "token", "description": "Scam" }, "tools.ozone.report.defs.reasonMisleadingElections": { "type": "string", "format": "token", "description": "False information about elections" }, "tools.ozone.report.defs.reasonMisleadingOther": { "type": "string", "format": "token", "description": "Other misleading content" }, "tools.ozone.report.defs.reasonRuleSiteSecurity": { "type": "string", "format": "token", "description": "Hacking or system attacks" }, "tools.ozone.report.defs.reasonRuleProhibitedSales": { "type": "string", "format": "token", "description": "Promoting or selling prohibited items or services" }, "tools.ozone.report.defs.reasonRuleBanEvasion": { "type": "string", "format": "token", "description": "Banned user returning" }, "tools.ozone.report.defs.reasonRuleOther": { "type": "string", "format": "token", "description": "Other" }, "tools.ozone.report.defs.reasonSelfHarmContent": { "type": "string", "format": "token", "description": "Content promoting or depicting self-harm" }, "tools.ozone.report.defs.reasonSelfHarmED": { "type": "string", "format": "token", "description": "Eating disorders" }, "tools.ozone.report.defs.reasonSelfHarmStunts": { "type": "string", "format": "token", "description": "Dangerous challenges or activities" }, "tools.ozone.report.defs.reasonSelfHarmSubstances": { "type": "string", "format": "token", "description": "Dangerous substances or drug abuse" }, "tools.ozone.report.defs.reasonSelfHarmOther": { "type": "string", "format": "token", "description": "Other dangerous content" }, "tools.ozone.safelink.defs.event": { "type": "object", "description": "An event for URL safety decisions", "required": [ "id", "eventType", "url", "pattern", "action", "reason", "createdBy", "createdAt" ], "properties": { "id": { "type": "integer" }, "eventType": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.eventType" }, "url": { "type": "string", "description": "The URL that this rule applies to" }, "pattern": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.patternType" }, "action": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.actionType" }, "reason": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.reasonType" }, "createdBy": { "type": "string", "description": "DID of the user who created this rule", "format": "did" }, "createdAt": { "type": "string", "format": "date-time" }, "comment": { "type": "string", "description": "Optional comment about the decision" } } }, "tools.ozone.safelink.defs.eventType": { "type": "string", "enum": [ "addRule", "updateRule", "removeRule" ] }, "tools.ozone.safelink.defs.patternType": { "type": "string", "enum": [ "domain", "url" ] }, "tools.ozone.safelink.defs.actionType": { "type": "string", "enum": [ "block", "warn", "whitelist" ] }, "tools.ozone.safelink.defs.reasonType": { "type": "string", "enum": [ "csam", "spam", "phishing", "none" ] }, "tools.ozone.safelink.defs.urlRule": { "type": "object", "description": "Input for creating a URL safety rule", "required": [ "url", "pattern", "action", "reason", "createdBy", "createdAt", "updatedAt" ], "properties": { "url": { "type": "string", "description": "The URL or domain to apply the rule to" }, "pattern": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.patternType" }, "action": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.actionType" }, "reason": { "$ref": "#/components/schemas/tools.ozone.safelink.defs.reasonType" }, "comment": { "type": "string", "description": "Optional comment about the decision" }, "createdBy": { "type": "string", "description": "DID of the user added the rule.", "format": "did" }, "createdAt": { "type": "string", "description": "Timestamp when the rule was created", "format": "date-time" }, "updatedAt": { "type": "string", "description": "Timestamp when the rule was last updated", "format": "date-time" } } }, "tools.ozone.server.getConfig.serviceConfig": { "type": "object", "properties": { "url": { "type": "string", "format": "uri" } } }, "tools.ozone.server.getConfig.viewerConfig": { "type": "object", "properties": { "role": { "type": "string", "enum": [ "tools.ozone.team.defs#roleAdmin", "tools.ozone.team.defs#roleModerator", "tools.ozone.team.defs#roleTriage", "tools.ozone.team.defs#roleVerifier" ] } } }, "tools.ozone.set.defs.set": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "minLength": 3, "maxLength": 128 }, "description": { "type": "string", "maxLength": 10240 } } }, "tools.ozone.set.defs.setView": { "type": "object", "required": [ "name", "setSize", "createdAt", "updatedAt" ], "properties": { "name": { "type": "string", "minLength": 3, "maxLength": 128 }, "description": { "type": "string", "maxLength": 10240 }, "setSize": { "type": "integer" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "tools.ozone.setting.defs.option": { "type": "object", "required": [ "key", "value", "did", "scope", "createdBy", "lastUpdatedBy" ], "properties": { "key": { "type": "string", "format": "nsid" }, "did": { "type": "string", "format": "did" }, "value": {}, "description": { "type": "string", "maxLength": 10240 }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "managerRole": { "type": "string", "enum": [ "tools.ozone.team.defs#roleModerator", "tools.ozone.team.defs#roleTriage", "tools.ozone.team.defs#roleAdmin", "tools.ozone.team.defs#roleVerifier" ] }, "scope": { "type": "string", "enum": [ "instance", "personal" ] }, "createdBy": { "type": "string", "format": "did" }, "lastUpdatedBy": { "type": "string", "format": "did" } } }, "tools.ozone.signature.defs.sigDetail": { "type": "object", "required": [ "property", "value" ], "properties": { "property": { "type": "string" }, "value": { "type": "string" } } }, "tools.ozone.signature.findRelatedAccounts.relatedAccount": { "type": "object", "required": [ "account" ], "properties": { "account": { "$ref": "#/components/schemas/com.atproto.admin.defs.accountView" }, "similarities": { "type": "array", "items": { "$ref": "#/components/schemas/tools.ozone.signature.defs.sigDetail" } } } }, "tools.ozone.team.defs.member": { "type": "object", "required": [ "did", "role" ], "properties": { "did": { "type": "string", "format": "did" }, "disabled": { "type": "boolean" }, "profile": { "$ref": "#/components/schemas/app.bsky.actor.defs.profileViewDetailed" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "lastUpdatedBy": { "type": "string" }, "role": { "type": "string", "enum": [ "tools.ozone.team.defs#roleAdmin", "tools.ozone.team.defs#roleModerator", "tools.ozone.team.defs#roleTriage", "tools.ozone.team.defs#roleVerifier" ] } } }, "tools.ozone.team.defs.roleAdmin": { "type": "string", "format": "token", "description": "Admin role. Highest level of access, can perform all actions." }, "tools.ozone.team.defs.roleModerator": { "type": "string", "format": "token", "description": "Moderator role. Can perform most actions." }, "tools.ozone.team.defs.roleTriage": { "type": "string", "format": "token", "description": "Triage role. Mostly intended for monitoring and escalating issues." }, "tools.ozone.team.defs.roleVerifier": { "type": "string", "format": "token", "description": "Verifier role. Only allowed to issue verifications." }, "tools.ozone.verification.defs.verificationView": { "type": "object", "description": "Verification data for the associated subject.", "required": [ "issuer", "uri", "subject", "handle", "displayName", "createdAt" ], "properties": { "issuer": { "type": "string", "description": "The user who issued this verification.", "format": "did" }, "uri": { "type": "string", "description": "The AT-URI of the verification record.", "format": "at-uri" }, "subject": { "type": "string", "description": "The subject of the verification.", "format": "did" }, "handle": { "type": "string", "description": "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.", "format": "handle" }, "displayName": { "type": "string", "description": "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying." }, "createdAt": { "type": "string", "description": "Timestamp when the verification was created.", "format": "date-time" }, "revokeReason": { "type": "string", "description": "Describes the reason for revocation, also indicating that the verification is no longer valid." }, "revokedAt": { "type": "string", "description": "Timestamp when the verification was revoked.", "format": "date-time" }, "revokedBy": { "type": "string", "description": "The user who revoked this verification.", "format": "did" }, "subjectProfile": { "oneOf": [] }, "issuerProfile": { "oneOf": [] }, "subjectRepo": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewDetail" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewNotFound" } ] }, "issuerRepo": { "oneOf": [ { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewDetail" }, { "$ref": "#/components/schemas/tools.ozone.moderation.defs.repoViewNotFound" } ] } } }, "tools.ozone.verification.grantVerifications.verificationInput": { "type": "object", "required": [ "subject", "handle", "displayName" ], "properties": { "subject": { "type": "string", "description": "The did of the subject being verified", "format": "did" }, "handle": { "type": "string", "description": "Handle of the subject the verification applies to at the moment of verifying.", "format": "handle" }, "displayName": { "type": "string", "description": "Display name of the subject the verification applies to at the moment of verifying." }, "createdAt": { "type": "string", "description": "Timestamp for verification record. Defaults to current time when not specified.", "format": "date-time" } } }, "tools.ozone.verification.grantVerifications.grantError": { "type": "object", "description": "Error object for failed verifications.", "required": [ "error", "subject" ], "properties": { "error": { "type": "string", "description": "Error message describing the reason for failure." }, "subject": { "type": "string", "description": "The did of the subject being verified", "format": "did" } } }, "tools.ozone.verification.revokeVerifications.revokeError": { "type": "object", "description": "Error object for failed revocations", "required": [ "uri", "error" ], "properties": { "uri": { "type": "string", "description": "The AT-URI of the verification record that failed to revoke.", "format": "at-uri" }, "error": { "type": "string", "description": "Description of the error that occurred during revocation." } } } }, "securitySchemes": { "Bearer": { "type": "http", "scheme": "bearer" } } }, "tags": [ { "name": "app.bsky.actor" }, { "name": "app.bsky.ageassurance" }, { "name": "app.bsky.bookmark" }, { "name": "app.bsky.contact" }, { "name": "app.bsky.embed" }, { "name": "app.bsky.feed" }, { "name": "app.bsky.graph" }, { "name": "app.bsky.labeler" }, { "name": "app.bsky.notification" }, { "name": "app.bsky.richtext" }, { "name": "app.bsky.unspecced" }, { "name": "app.bsky.video" }, { "name": "chat.bsky.actor" }, { "name": "chat.bsky.convo" }, { "name": "chat.bsky.moderation" }, { "name": "com.atproto.admin" }, { "name": "com.atproto.identity" }, { "name": "com.atproto.label" }, { "name": "com.atproto.lexicon" }, { "name": "com.atproto.moderation" }, { "name": "com.atproto.repo" }, { "name": "com.atproto.server" }, { "name": "com.atproto.sync" }, { "name": "com.atproto.temp" }, { "name": "tools.ozone.communication" }, { "name": "tools.ozone.hosting" }, { "name": "tools.ozone.moderation" }, { "name": "tools.ozone.report" }, { "name": "tools.ozone.safelink" }, { "name": "tools.ozone.server" }, { "name": "tools.ozone.set" }, { "name": "tools.ozone.setting" }, { "name": "tools.ozone.signature" }, { "name": "tools.ozone.team" }, { "name": "tools.ozone.verification" } ] }