fyi.atstore.listing.detail

atstore.fyi

Documentation

Public protocol or app listing in the AT Store directory. Images are stored as repo blobs (Kitchen-style); the web app caches HTTPS URLs in Postgres separately.

main record

Public protocol or app listing in the AT Store directory. Images are stored as repo blobs (Kitchen-style); the web app caches HTTPS URLs in Postgres separately.

Record Key tid Timestamp-based ID

Properties

appTags array of string Optional

No description available.

maxLength: 64 items
categorySlug array of string Required

Browse category keys (e.g. protocol/pds). First entry is the primary category for legacy surfaces.

maxLength: 32 itemsminLength: 1 items
createdAt string datetime Required

An RFC 3339 formatted timestamp.

description string Optional

No description available.

maxLength: 20000 bytes
externalUrl string uri Required

Primary product or project URL.

maxLength: 2048 bytes
heroImage blob Optional

Hero / cover image blob.

maxSize: 12.0 MB
icon blob Required

Square / app icon (uploaded to repo via com.atproto.repo.uploadBlob).

maxSize: 2.0 MB
migratedFromAtUri string at-uri Optional

When this listing.detail record supersedes a prior record in another repo (e.g. moved from the AT Store publisher to a product owner PDS), the at:// URI of that prior fyi.atstore.listing.detail record.

maxLength: 8192 bytes
name string Required

No description available.

maxLength: 640 bytes
productAccountDid string Optional

Bluesky DID for the product, app, or tool (not the AT Store publisher). Handle is resolved and stored in Postgres only.

maxLength: 2048 bytes
screenshots array of blob Optional

No description available.

maxLength: 20 items
slug string Required

Stable URL slug; unique within the publishing account.

maxLength: 512 bytesminLength: 1 bytes
tagline string Required

No description available.

maxLength: 300 bytes
updatedAt string datetime Required

An RFC 3339 formatted timestamp.

View raw schema
{
  "description": "Public protocol or app listing in the AT Store directory. Images are stored as repo blobs (Kitchen-style); the web app caches HTTPS URLs in Postgres separately.",
  "key": "tid",
  "record": {
    "properties": {
      "appTags": {
        "items": {
          "maxLength": 96,
          "type": "string"
        },
        "maxLength": 64,
        "type": "array"
      },
      "categorySlug": {
        "description": "Browse category keys (e.g. protocol/pds). First entry is the primary category for legacy surfaces.",
        "items": {
          "maxLength": 256,
          "type": "string"
        },
        "maxLength": 32,
        "minLength": 1,
        "type": "array"
      },
      "createdAt": {
        "format": "datetime",
        "type": "string"
      },
      "description": {
        "maxLength": 20000,
        "type": "string"
      },
      "externalUrl": {
        "description": "Primary product or project URL.",
        "format": "uri",
        "maxLength": 2048,
        "type": "string"
      },
      "heroImage": {
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp",
          "image/gif",
          "image/svg+xml"
        ],
        "description": "Hero / cover image blob.",
        "maxSize": 12000000,
        "type": "blob"
      },
      "icon": {
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp",
          "image/gif",
          "image/svg+xml"
        ],
        "description": "Square / app icon (uploaded to repo via com.atproto.repo.uploadBlob).",
        "maxSize": 2000000,
        "type": "blob"
      },
      "links": {
        "description": "Relevant links for the app, including trust/compliance, support, and project resources.",
        "items": {
          "ref": "#link",
          "type": "ref"
        },
        "maxLength": 12,
        "type": "array"
      },
      "migratedFromAtUri": {
        "description": "When this listing.detail record supersedes a prior record in another repo (e.g. moved from the AT Store publisher to a product owner PDS), the at:// URI of that prior fyi.atstore.listing.detail record.",
        "format": "at-uri",
        "maxLength": 8192,
        "type": "string"
      },
      "name": {
        "maxLength": 640,
        "type": "string"
      },
      "productAccountDid": {
        "description": "Bluesky DID for the product, app, or tool (not the AT Store publisher). Handle is resolved and stored in Postgres only.",
        "maxLength": 2048,
        "type": "string"
      },
      "screenshots": {
        "items": {
          "accept": [
            "image/png",
            "image/jpeg",
            "image/webp",
            "image/gif",
            "image/svg+xml"
          ],
          "maxSize": 12000000,
          "type": "blob"
        },
        "maxLength": 20,
        "type": "array"
      },
      "slug": {
        "description": "Stable URL slug; unique within the publishing account.",
        "maxLength": 512,
        "minLength": 1,
        "type": "string"
      },
      "tagline": {
        "maxLength": 300,
        "type": "string"
      },
      "updatedAt": {
        "format": "datetime",
        "type": "string"
      }
    },
    "required": [
      "slug",
      "name",
      "tagline",
      "externalUrl",
      "icon",
      "categorySlug",
      "createdAt",
      "updatedAt"
    ],
    "type": "object"
  },
  "type": "record"
}
link object

No description available.

Properties

label string Optional

Optional human-readable label, especially useful when type is 'other'.

maxLength: 100 bytesmaxGraphemes: 50 graphemes
type string Required

The kind of link.

maxLength: 32 bytes
Known values: privacy, terms, support, contact, docs, blog, changelog, source, status, community, donate, license, other
url string uri Required

The destination URL.

maxLength: 2048 bytes
View raw schema
{
  "properties": {
    "label": {
      "description": "Optional human-readable label, especially useful when type is 'other'.",
      "maxGraphemes": 50,
      "maxLength": 100,
      "type": "string"
    },
    "type": {
      "description": "The kind of link.",
      "knownValues": [
        "privacy",
        "terms",
        "support",
        "contact",
        "docs",
        "blog",
        "changelog",
        "source",
        "status",
        "community",
        "donate",
        "license",
        "other"
      ],
      "maxLength": 32,
      "type": "string"
    },
    "url": {
      "description": "The destination URL.",
      "format": "uri",
      "maxLength": 2048,
      "type": "string"
    }
  },
  "required": [
    "type",
    "url"
  ],
  "type": "object"
}

Lexicon Garden

@