AT Protocol on ATStore

Public GET endpoints under /xrpc/<nsid>. Lexicons: lexicons/fyi/atstore/.

Base URL

Replace the origin with your deployment (local dev shown when opened in the browser):

https://your-deployment.example/xrpc/

Methods

HTTP
NSID
Summary
GET
fyi.atstore.server.describe

Capabilities, limits, and registered method NSIDs.

GET
fyi.atstore.directory.searchListings

Search public listings with pagination (`q`, `sort`, `cursor`).

GET
fyi.atstore.directory.getListing

Listing detail: exactly one of `uri` (listing.detail AT URI) or `externalUrl` (unique storefront URL).

GET
fyi.atstore.reviews.listForListing

Reviews for a listing (`uri` listing.detail AT URI, pagination); mirrored Tap index.

Listing reviews

Reviews are written with com.atproto.repo.createRecord on the author's PDS (repository). Use fyi.atstore.directory.getListing with query param uri (the listing.detail AT URI) or externalUrl (unique storefront URL); do not pass both. The JSON includes listing.uri. Use that value as subject on a new fyi.atstore.listing.review record.

The author's repo must include fyi.atstore.profile at record key self—directory ingestion does not pick up fyi.atstore.listing.review records until that profile exists.

Example record (omit text for stars-only):

{
  "$type": "fyi.atstore.listing.review",
  "subject": "at://…/fyi.atstore.listing.detail/…",
  "rating": 4,
  "createdAt": "2026-05-04T12:00:00.000Z",
  "text": "Optional prose."
}
Permission-set fyi.atstore.authThirdPartyReviews bundles repo:create on fyi.atstore.profile and fyi.atstore.listing.review (permissions).