This is documentation of objects and APIs specified by an atproto lexicon as defined here.
Show: All APIs Data
A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.
An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.
Storage for NUXs the user has encountered.
The URI of the feed, or an identifier which describes the feed.
Hide replies in the feed.
Hide replies in the feed if they are not by followed users.
default=TrueHide replies in the feed if they do not have this number of likes.
Hide reposts in the feed.
Hide quote posts in the feed.
A word that the account owner has muted.
The muted word itself.
maxLength=10000 maxGraphemes=1000Groups of users to apply the muted word to. If undefined, applies to all users.
knownValues=['all', 'exclude-following'] default=allThe date and time at which the muted word will expire and no longer be applied.
format=datetimeA new user experiences (NUX) storage object
Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.
maxLength=3000 maxGraphemes=300The date and time at which the NUX will expire and should be considered completed.
format=datetimeDefault 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.
Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.
Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.
Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.
Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding.
Snowflake for this recommendation, use when submitting recommendation events.
A declaration of a Bluesky account profile.
Key:
Free-form profile description text.
maxLength=2560 maxGraphemes=256Small image to be displayed next to posts from account. AKA, 'profile picture'
accept=[] maxSize=1000000Larger horizontal image to display behind profile view.
accept=[] maxSize=1000000Self-label values, specific to the Bluesky application, on the overall account.
Find actors (profiles) matching search criteria. Does not require auth.
DEPRECATED: use 'q' instead.
Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.
Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth.
DEPRECATED: use 'q' instead.
Search query prefix; not a full query string.
A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).
Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.
format=uriFully-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=uriAlt text description of the image, for accessibility.
The record data itself.
Context provided by feed generator that may be passed back alongside interactions.
maxLength=2000Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.
maxLength=2000When parent is a reply to another post, this is the author of that post.
ref=app.bsky.actor.defs#profileViewBasicMetadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.
Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.
Key:
Declaration that a feed accepts feedback interactions from a client through app.bsky.feed.sendInteractions
Get a list of feeds (feed generator records) created by the actor (in the actor's repo).
Get a list of posts liked by an actor. Requires auth, actor must be the requesting account.
Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.
Combinations of post/repost types to include in response.
knownValues=['posts_with_replies', 'posts_no_replies', 'posts_with_media', 'posts_and_author_threads', 'posts_with_video'] default=posts_with_repliesGet a hydrated feed from an actor's selected feed generator. Implemented by App View.
Get information about a feed generator. Implemented by AppView.
AT-URI of the feed generator record.
format=at-uriIndicates whether the feed generator service has been online recently, or else seems to be inactive.
Indicates whether the feed generator service is compatible with the record declaration.
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.
Reference to feed generator record describing the specific feed being requested.
format=at-uriGet like records which reference a subject (by AT-URI and CID).
AT-URI of the subject (eg, a post record).
format=at-uriCID of the subject record (aka, specific version of record), to filter likes.
format=cidGet a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.
Reference (AT-URI) to the list record.
format=at-uriGet posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.
Reference (AT-URI) to post record.
format=at-uriHow many levels of reply depth should be included in response.
maximum=1000 default=6How many levels of parent (and grandparent, etc) post to include.
maximum=1000 default=80Get a list of quotes for a given post.
Reference (AT-URI) of post record
format=at-uriIf supplied, filters to quotes of specific version (by CID) of the post record.
format=cidGet a list of reposts for a given post.
Reference (AT-URI) of post record
format=at-uriIf supplied, filters to reposts of specific version (by CID) of the post record.
format=cidGet a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed.
Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism.
Record containing a Bluesky post.
Key:
The primary post content. May be an empty string, if there are embeds.
maxLength=3000 maxGraphemes=300Indicates human language of post primary text content.
Self-label values for this post. Effectively content warnings.
Additional hashtags, in addition to any included in post text and facets.
Client-declared timestamp when this post was originally created.
format=datetimeDeprecated: use facets instead.
Expected values are 'mention' and 'link'.
Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.
Key:
Reference (AT-URI) to the post record.
format=at-uriList of AT-URIs embedding this post that the author has detached from.
List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed.
Find posts matching search criteria, returning views of those posts.
Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.
Specifies the ranking order of results.
knownValues=['top', 'latest'] default=latestFilter 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).
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).
Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.
format=at-identifierFilter to posts by the given account. Handles are resolved to DID before query-time.
format=at-identifierFilter to posts in the given language. Expected to be based on post language field, though server may override language detection.
format=languageFilter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.
Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.
format=uriFilter 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.
Optional pagination mechanism; may not necessarily allow scrolling through entire result set.
Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.
Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository.
Key:
Reference (AT-URI) to the post record.
format=at-uriList of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply.
List of hidden reply URIs.
lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)
if the actor follows this DID, this is the AT-URI of the follow record
format=at-uriif the actor is followed by this DID, contains the AT-URI of the follow record
format=at-uriEnumerates accounts which follow a specified account (actor).
Enumerates accounts which a specified account (actor) follows.
Enumerates accounts which follow a specified account (actor) and are followed by the viewer.
Gets a 'view' (with additional context) of a specified list.
Reference (AT-URI) of the list record to hydrate.
format=at-uriEnumerates the lists created by a specified account (actor).
The account (actor) to enumerate lists from.
format=at-identifierEnumerates public relationships between one account, and a list of other accounts. Does not require auth.
Primary account requesting relationships for.
format=at-identifierList of 'other' accounts to be related back to the primary.
Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account.
If true, response has fallen-back to generic results, and is not scoped using relativeToDid
Snowflake for this recommendation, use when submitting recommendation events.
Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.
Key:
Defines the purpose of the list (aka, moderation-oriented or curration-oriented)
ref=app.bsky.graph.defs#listPurposeDisplay name for list; can not be empty.
minLength=1 maxLength=64Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.
Key:
The account which is included on the list.
format=didReference (AT-URI) to the list record (app.bsky.graph.list).
format=at-uriFind starter packs matching search criteria. Does not require auth.
Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.
Record defining a starter pack of actors and feeds for new users.
Key:
Display name for starter pack; can not be empty.
minLength=1 maxLength=500 maxGraphemes=50Reference (AT-URI) to the list record.
format=at-uriThe label values which this labeler publishes. May include global or custom labels.
Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.
The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.
The set of subject types (account, record, etc) this service accepts reports on.
Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.
A declaration of the existence of labeler service.
Key:
The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.
The set of subject types (account, record, etc) this service accepts reports on.
Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.
Enumerate notifications for the requesting account. Requires auth.
Notification reasons to include in response.
A reason that matches the reason property of #notification.
Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', and 'starterpack-joined'.
knownValues=['like', 'repost', 'follow', 'mention', 'reply', 'quote', 'starterpack-joined']Register to receive push notifications, via a specified service, for the requesting account. Requires auth.
Annotation of a sub-string within rich text.
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.
Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions
DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.
format=didDID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.
format=didDID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer.
format=didSnowflake for this recommendation, use when submitting recommendation events.
Get a list of trending topics
DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.
format=didBackend Actors (profile) search, returns only skeleton.
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.
DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.
format=didIf true, acts as fast/simple 'typeahead' query.
Optional pagination mechanism; may not necessarily allow scrolling through entire result set.
Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.
Backend Posts search, returns only skeleton
Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.
Specifies the ranking order of results.
knownValues=['top', 'latest'] default=latestFilter 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).
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).
Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.
format=at-identifierFilter to posts by the given account. Handles are resolved to DID before query-time.
format=at-identifierFilter to posts in the given language. Expected to be based on post language field, though server may override language detection.
format=languageFilter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.
Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.
format=uriFilter 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.
DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.
format=didOptional pagination mechanism; may not necessarily allow scrolling through entire result set.
Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.
Backend Starter Pack search, returns only skeleton.
Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.
DID of the account making the request (not included for public/unauthenticated queries).
format=didOptional pagination mechanism; may not necessarily allow scrolling through entire result set.
Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.
The state of the video processing job. All values not listed as a known value indicate that the job is in process.
knownValues=['JOB_STATE_COMPLETED', 'JOB_STATE_FAILED']Progress within the current processing state.
maximum=100Set to true when the actor cannot actively participate in converations
Get whether the requester and the other members can chat. If an existing convo is found for these members, it is returned.
Conversation that the message is from. NOTE: this field will eventually be required.
Send email to a user's account email address.
Additional comment by the sender that won't be used in the email itself but helpful to provide more context for moderators/reviewers
Describe the credentials that should be included in the DID doc of an account that is migrating to this service.
Recommended rotation keys for PLC dids. Should be undefined (or ignored) for did:webs.
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.
Resolves DID to DID document. Does not bi-directionally verify handle.
DID to resolve.
format=didThe complete DID document for the identity.
Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.
The handle to resolve.
format=handleResolves an identity (DID or Handle) to a full identity (DID document and verified handle).
Handle or DID to resolve.
format=at-identifierSigns a PLC operation to update some value(s) in the requesting DID's document.
A token received through com.atproto.identity.requestPlcOperationSignature
A signed DID PLC operation.
Metadata tag on an atproto resource (eg, repo or record).
The AT Protocol version of the label object.
DID of the actor who created this label.
format=didAT URI of the record, repository (account), or other resource that this label applies to.
format=uriOptionally, CID specifying the specific version of 'uri' resource this label applies to.
format=cidThe short string name of the value or type of this label.
maxLength=128If true, this is a negation label, overwriting a previous label.
Timestamp when this label was created.
format=datetimeTimestamp at which this label expires (no longer applies).
format=datetimeSignature of dag-cbor encoded label.
Declares a label value and its expected interpretations and behaviors.
The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).
maxLength=100 maxGraphemes=100How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.
knownValues=['inform', 'alert', 'none']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.
knownValues=['content', 'media', 'none']The default setting for this label.
knownValues=['ignore', 'warn', 'hide'] default=warnDoes the user need to have adult content enabled in order to configure this label?
Strings which describe the label in the UI, localized into a specific language.
The code of the language these strings are written in.
format=languageA short human-readable name for the label.
maxLength=640 maxGraphemes=64A longer description of what the label means and why it might be applied.
maxLength=100000 maxGraphemes=10000Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth.
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.
Optional list of label sources (DIDs) to filter on.
Representation of Lexicon schemas themselves, when published as atproto records. Note that the schema language is not defined in Lexicon; this meta schema currently only includes a single version field ('lexicon'). See the atproto specifications for description of the other expected top-level fields ('id', 'defs', etc).
Key:
Indicates the 'version' of the Lexicon language. Must be '1' for the current atproto/Lexicon schema system.
Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.
Indicates the broad category of violation the report is for.
ref=com.atproto.moderation.defs#reasonTypeAdditional context about the content and violation.
maxLength=20000 maxGraphemes=2000Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.
The handle or DID of the repo (aka, current account).
format=at-identifierCan 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.
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=cidCreate a single new repository record. Requires auth, implemented by PDS.
The handle or DID of the repo (aka, current account).
format=at-identifierThe NSID of the record collection.
format=nsidThe Record Key.
format=record-key maxLength=512Can 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.
The record itself. Must contain a $type field.
Compare and swap with the previous commit by CID.
format=cidDelete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.
The handle or DID of the repo (aka, current account).
format=at-identifierThe NSID of the record collection.
format=nsidThe Record Key.
format=record-keyCompare and swap with the previous record by CID.
format=cidCompare and swap with the previous commit by CID.
format=cidGet information about an account and repository, including the list of collections. Does not require auth.
The handle or DID of the repo.
format=at-identifierThe complete DID document for this account.
List of all the collections (NSIDs) for which this repo contains at least one record.
Indicates if handle is currently valid (resolves bi-directionally)
Get a single record from a repository. Does not require auth.
The handle or DID of the repo.
format=at-identifierThe NSID of the record collection.
format=nsidThe Record Key.
format=record-keyThe CID of the version of the record. If not specified, then return the most recent version.
format=cidList a range of records in a repository, matching a specific collection. Does not require auth.
The handle or DID of the repo.
format=at-identifierThe NSID of the record type.
format=nsidThe number of records to return.
minimum=1 maximum=100 default=50Flag to reverse the order of the returned records.
Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS.
The handle or DID of the repo (aka, current account).
format=at-identifierThe NSID of the record collection.
format=nsidThe Record Key.
format=record-key maxLength=512Can 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.
The record to write.
Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation
format=cidCompare and swap with the previous commit by CID.
format=cidUpload 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.
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.
Create an account. Implemented by PDS.
Requested handle for the account.
format=handlePre-existing atproto DID, being imported to a new account.
format=didInitial account password. May need to meet instance-specific password strength requirements.
DID PLC rotation key (aka, recovery key) to be included in PLC creation operation.
A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented.
Account login session returned on successful account creation.
The DID of the new account.
format=didComplete DID document.
Create an App Password.
A short name for the App Password, to help distinguish them.
If an app password has 'privileged' access to possibly sensitive account state. Meant for use with trusted clients.
Create an authentication session.
Handle or other identifier supported by the server for the authenticating user.
When true, instead of throwing error for takendown accounts, a valid response with a narrow scoped token will be returned
If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.
knownValues=['takendown', 'suspended', 'deactivated']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.
A recommendation to server as to how long they should hold onto the deactivated account before deleting.
format=datetimeDelete an actor's account with a token and password. Can only be called after requesting a deletion token. Requires auth.
Describes the server's account creation requirements and capabilities. Implemented by PDS.
If true, an invite code must be supplied to create an account on this instance.
If true, a phone verification token must be supplied to create an account on this instance.
List of domain suffixes that can be used in account handles.
Get all invite codes for the current account. Requires auth.
Controls whether any new 'earned' but not 'created' invites should be created.
default=TrueGet a signed token on behalf of the requesting DID for the requested service.
The DID of the service that the token will be used to authenticate with
format=didThe 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.
Lexicon (XRPC) method to bind the requested token to
format=nsidGet information about the current auth session. Requires auth.
If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.
knownValues=['takendown', 'suspended', 'deactivated']Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').
Hosting status of the account. If not specified, then assume 'active'.
knownValues=['takendown', 'suspended', 'deactivated']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.
The DID to reserve a key for.
format=didThe public key for the reserved signing key, in did:key serialization.
Update an account's email.
Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed.
Get a blob associated with a given account. Returns the full blob as originally uploaded. Does not require auth; implemented by PDS.
The DID of the account.
format=didThe CID of the blob to fetch
format=cidGet data blocks from a given repo, by CID. For example, intermediate MST nodes, or records. Does not require auth; implemented by PDS.
The DID of the repo.
format=didGet the current commit CID & revision of the specified repo. Does not require auth.
The DID of the repo.
format=didGet data blocks needed to prove the existence or non-existence of record in the current version of repo. Does not require auth.
The DID of the repo.
format=didRecord Key
format=record-keyDownload a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS.
The DID of the repo.
format=didThe revision ('rev') of the repo to create a diff from.
format=tidGet the hosting status for a repository, on this server. Expected to be implemented by PDS and Relay.
The DID of the repo.
format=didIf active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.
knownValues=['takendown', 'suspended', 'deleted', 'deactivated', 'desynchronized', 'throttled']Optional field, the current rev of the repo, if active=true
format=tidList blob CIDs for an account, since some repo revision. Does not require auth; implemented by PDS.
The DID of the repo.
format=didOptional revision of the repo to list blobs since.
format=tidCurrent repo commit CID
format=cidIf active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.
knownValues=['takendown', 'suspended', 'deleted', 'deactivated', 'desynchronized', 'throttled']Enumerates all the DIDs which have records with the given collection NSID.
Maximum size of response set. Recommend setting a large maximum (1000+) when enumerating large DID lists.
minimum=1 maximum=2000 default=500Notify 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
Hostname of the current service (usually a PDS) that is notifying of update.
Request a service to persistently crawl hosted repos. Expected use is new PDS instances declaring their existence to Relays. Does not require auth.
Hostname of the current service (eg, PDS) that is requesting to be crawled.
Repository event stream, aka Firehose endpoint. Outputs repo commits with diff data, and identity update events, for all repositories on the current server. See the atproto specifications for details around stream sequencing, repo versioning, CAR diff format, and more. Public and does not require auth; implemented by PDS and Relay.
The last known event seq number to backfill from.
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.
Indicates that the account has a repository which can be fetched from the host that emitted this event.
If active=false, this optional field indicates a reason for why the account is not active.
knownValues=['takendown', 'suspended', 'deleted', 'deactivated', 'desynchronized', 'throttled']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.
The stream sequence number of this message.
DEPRECATED -- unused
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.
The repo this event comes from. Note that all other message types name this field 'did'.
format=didRepo commit object CID.
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=tidThe rev of the last emitted commit from this repo (if any).
format=tidCAR 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=2000000List of repo mutation operations in this commit (eg, records created, updated, or deleted).
ref=#repoOpDEPRECATED -- will soon always be empty. List of new blobs (by CID) referenced by records in this commit.
The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose.
Timestamp of when this message was originally broadcast.
format=datetimeRepresents 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.
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=handleA repo operation, ie a mutation of a single record.
For creates and updates, the new record CID. For deletions, null.
For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.
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.
The stream sequence number of this message.
The account this repo event corresponds to. Must match that in the commit object.
format=didCAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.
maxLength=10000The rev of the commit. This value must match that in the commit object.
Timestamp of when this message was originally broadcast.
format=datetimeAdministrative action to create a new, re-usable communication (email for now) template.
Name of the template.
Content of the template, markdown supported, can contain variable placeholders.
Subject of the message, used in emails.
Message language.
format=languageDID of the user who is creating the template.
format=didName of the template.
Content of the template, can contain markdown and variable placeholders.
Subject of the message, used in emails.
Message language.
format=languageDID of the user who last updated the template.
format=didAdministrative action to update an existing communication template. Allows passing partial fields to patch specific fields only.
ID of the template to be updated.
Name of the template.
Message language.
format=languageContent of the template, markdown supported, can contain variable placeholders.
Subject of the message, used in emails.
DID of the user who is updating the template.
format=didLogs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
Indicates that the account has a repository which can be fetched from the host that emitted this event.
Statistics about a particular account subject
Total number of reports on the account
Total number of appeals against a moderation action on the account
Number of times the account was suspended
Number of times the account was escalated
Number of times the account was taken down
Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
Apply/Negate labels on a subject
Indicates how long the label will remain on the subject. Only applies on labels that are being added.
Add/Remove a tag on a subject
Tags to be added to the subject. If already exists, won't be duplicated.
Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.
Additional comment about added/removed tags.
Take down a subject permanently or temporarily
Indicates how long the takedown should be in effect before automatically expiring.
If true, all other reports on content authored by this account will be resolved (acknowledged).
Names/Keywords of the policies that drove the decision.
Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.
Statistics about a set of record subject items
Cumulative sum of the number of reports on the items in the set
Number of items that were reported at least once
Number of items that were escalated at least once
Number of items that were appealed at least once
Total number of item in the set
Number of item currently in "reviewOpen" or "reviewEscalated" state
Number of item currently in "reviewNone" or "reviewClosed" state
Number of item currently taken down
The total number of reports made by the user on accounts.
The total number of reports made by the user on records.
The total number of accounts reported by the user.
The total number of records reported by the user.
The total number of accounts taken down as a result of the user's reports.
The total number of records taken down as a result of the user's reports.
The total number of accounts labeled as a result of the user's reports.
The total number of records labeled as a result of the user's reports.
Timestamp referencing when the last update was made to the moderation status of the subject
format=datetimeTimestamp referencing the first moderation status impacting event was emitted on the subject
format=datetimeSticky comment on the subject.
Numeric value representing the level of priority. Higher score means higher priority.
maximum=100Timestamp referencing when the author of the subject appealed a moderation action
format=datetimeTrue 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.
Take a moderation action on an actor.
List moderation events related to a subject.
The types of events (fully qualified string in the format of tools.ozone.moderation.defs#modEvent
Sort direction for the events. Defaults to descending order of created at timestamp.
enum=['asc', 'desc'] default=descRetrieve events created after a given timestamp
format=datetimeRetrieve events created before a given timestamp
format=datetimeIf specified, only events where the subject belongs to the given collections will be returned. When subjectType is set to 'account', this will be ignored.
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.
knownValues=['account', 'record']If true, events on all record types (posts, lists, profile etc.) or records from given 'collections' param, owned by the did are returned.
If true, only events with comments are returned
If specified, only events with comments containing the keyword are returned. Apply || separator to use multiple keywords and match using OR condition.
If specified, only events where all of these labels were added are returned
If specified, only events where all of these labels were removed are returned
If specified, only events where all of these tags were added are returned
If specified, only events where all of these tags were removed are returned
If specified, only events where the action policies match any of the given policies are returned
View moderation statuses of subjects (record or repo).
Number of queues being used by moderators. Subjects will be split among all queues.
Index of the queue to fetch subjects from. Works only when queueCount value is specified.
A seeder to shuffle/balance the queue items.
All subjects, or subjects from given 'collections' param, belonging to the account specified in the 'subject' param will be returned.
The subject to get the status for.
format=uriSearch subjects by keyword from comments
Search subjects reported after a given timestamp
format=datetimeSearch subjects reported before a given timestamp
format=datetimeSearch subjects reviewed after a given timestamp
format=datetimeSearch subjects where the associated record/account was deleted after a given timestamp
format=datetimeSearch subjects where the associated record/account was deleted before a given timestamp
format=datetimeSearch subjects where the associated record/account was updated after a given timestamp
format=datetimeSearch subjects where the associated record/account was updated before a given timestamp
format=datetimeSearch subjects by the status of the associated record/account
Search subjects reviewed before a given timestamp
format=datetimeBy default, we don't include muted subjects in the results. Set this to true to include them.
When set to true, only muted subjects and reporters will be returned.
Specify when fetching subjects in a certain state
Get all subject statuses that were reviewed by a specific moderator
format=didGet subjects that were taken down
Get subjects in unresolved appealed status
Items in this array are applied with OR filters. To apply AND filter, put all tags in the same string and separate using && characters
If specified, subjects belonging to the given collections will be returned. When subjectType is set to 'account', this will be ignored.
If specified, subjects of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.
knownValues=['account', 'record']If specified, only subjects that belong to an account that has at least this many suspensions will be returned.
If specified, only subjects that belong to an account that has at least this many reported records will be returned.
If specified, only subjects that belong to an account that has at least this many taken down records will be returned.
If specified, only subjects that have priority score value above the given value will be returned.
maximum=100Add values to a specific set. Attempting to add values to a set that does not exist will result in an error.
Name of the set to add values to
Array of string values to add to the set
Delete an entire set. Attempting to delete a set that does not exist will result in an error.
Name of the set to delete
Delete values from a specific set. Attempting to delete values that are not in the set will not result in an error
Name of the set to delete values from
Array of string values to delete from the set
Query available sets
Defaults to ascending order of name field.
enum=['asc', 'desc'] default=ascList settings with optional filtering
Filter keys by prefix
Filter for only the specified keys. Ignored if prefix is provided
Create or update setting option
Get accounts that share some matching threat signatures with the root account.
Search for accounts that match one or more threat signature values.
Add a member to the ozone team. Requires admin role.
Update a member in the ozone service. Requires admin role.